2017-11-24 1 views
2

Betrachten Sie das folgende JSON-Format in Firebase Datenbank erhalten -Wie Kinder mit einem Wert ungleich 0

"root": 
{ 
    "question": 
    { 
     "1": 
     { 
      "category":"A", 
      "replies":0 
     }, 
     "2": 
     { 
      "category":"B", 
      "replies":1 
     }, 
     "3": 
     { 
      "category":"B", 
      "replies":0 
     }, 
     "4": 
     { 
      "category":"C", 
      "replies":2 
     } 
    } 
} 

Für alle Fragen mit Antworten = 0 bekommen, muss ich,

Query query = rootReference.child("question").orderByChild("replies").equalTo(0); 

die funktioniert perfekt.

Aber was soll ich tun, wenn ich diese Fragen mit Antworten ungleich 0 möchte?

+0

Versuchen Sie es mit der = Syntax statt .equalTo – Nero

Antwort

3

die Dokumentation Lese, sehe ich keine notEqualTo() Methode oder jede andere Art und Weise zu „negiert“ eine Abfrage. Allerdings sind, da Sie bereits .orderByChild("replies") Aufruf, könnten Sie vielleicht verwenden:

Query query = rootReference.child("question").orderByChild("replies").startAt(1); 
+0

, die ich denke, andere werden lassen, die sind = 0 && = 1 –

+0

@vikaskumar Dokumentation für 'startAt()' sagt "Rückgabe untergeordnete Knoten mit einem Wert größer oder gleich dem angegebenen Wert", so das einzige Problem entsteht, wenn negative Werte in OP-Datensatz möglich sind. –

+0

dann denke ich, das sollte der richtige Weg sein, es zu tun. da Antworten unter idealen Bedingungen nicht negativ sein können. –

0

Firebase unterstützt derzeit nur positive Operationen, nicht die Negation. Sie möchten vielleicht alle Daten abrufen und dann lokal filtern.

Hier voll ist answer

0

Eigentlich Firebase bietet keine Methode einige Ergebnisse auszuschließen, wie Sie hier suchen.

Allerdings können Sie Ihre JSON ändern wie diese & dann folgende Abfrage verwenden:!

// add a different key for all replies = 0, & another different key for non-zero replies 
"root": 
{ 
    "question": 
    { 
     "1": 
     { 
      "category":"A", 
      "replies":0, 
      "key2":"someOtherKey" 
     }, 
     "2": 
     { 
      "category":"B", 
      "replies":1, 
      "key1":true 
     }, 
     "3": 
     { 
      "category":"B", 
      "replies":0, 
      "key2":"someOtherKey" 
     }, 
     "4": 
     { 
      "category":"C", 
      "replies":2, 
      "key1":true 
     } 
    } 
} 

// now you can use this query to get all non-zero-replies results 
// it will give you child 2, 4 
Query query = rootReference.child("question").orderByChild("key1").equalTo(true); 

// to get all zero-replies childs, use this 
Query query = rootReference.child("question").orderByChild("key1").equalTo(null); 
Verwandte Themen