2016-05-09 17 views
0

In meiner React Native App versuche ich derzeit alle Elemente mit der Eigenschaft selected aus der Datenbank auf "true" zu setzen. Wenn ich jedoch die Ergebnisse dieser Abfrage protokolliere, werden sie alle als null zurückgegeben (obwohl die erwartete Antwort zwei Objekte zurückgeben sollte). Mein relevanter Code sowie Firebase-Struktur sind unten enthalten, bitte lassen Sie mich wissen, wenn Sie etwas entdecken.equalTo Null von Firebase zurückgeben?

const rootRef = new Firebase(`${ config.FIREBASE_ROOT }`) 

var queryRef = rootRef.orderByChild("items/selected"); 

var solution = queryRef.equalTo("true").once('value', function(snap) { 
    console.log(snap.val()) 
}); 

Firebase JSON:

"items": 
[ 
    { 
    "title":"ball", 
    "selected": "false" 
    }, 

    { 
    "title":"dog", 
    "selected": "true" 
    }, 

    { 
    "title":"phone", 
    "selected": "false" 
    }, 

    { 
    "title":"cup", 
    "selected": "true" 
    } 
], 
+0

Antwort unten. Aber ich habe auch bemerkt, dass Sie die Objekte als Array im JSON-Baum speichern, was oft zu Problemen führt. Lesen Sie unbedingt den entsprechenden [Abschnitt in der Firebase-Dokumentation] (https://www.firebase.com/docs/rest/guide/understanding-data.html#section-arrays-in-firebase) –

+0

@FrankvanPuffelen thanks-- aber ich dachte in JSON, wenn Sie mehrere Objekte des gleichen Typs haben, sollten sie als ein Array gespeichert werden? In diesem Fall hat jedes meiner Objekte die gleichen Attribute (der gleiche Objekttyp), also dachte ich, ich müsste sie in einem Array speichern. Wie sonst sollte ich das machen? – user3802348

+0

Lesen Sie die (Firebase-Dokumentation zum Speichern von Datenlisten) (https://www.firebase.com/docs/web/guide/saving-data.html#section-push). In der Tat, ich empfehle, dass Sie das lesen Ganz einfach, wenn du ein paar Stunden dort verbringst, dann wirst du viel Zeit auf der ganzen Linie sparen. –

Antwort

0

Wenn Sie eine Firebase Abfrage auf einem Standort ausführen, dauert es jedes Kind Knoten unter diesem Standort und wertet dann die Bedingung, die Sie angeben. Wenn Sie jedes Kind unter items nehmen, werden Sie sehen, dass dort kein Pfad items/selected unter dort ist.

Sie Abfrage statt:

var itemsRef = rootRef.child("items"); 
var queryRef = itemsRef.orderByChild("selected"); 
+0

Habe die Änderungen einfach gemacht (und auch meine JSON geändert, um Arrays zu entfernen) und das scheint immer noch Nullwerte zurückzugeben. – user3802348

Verwandte Themen