Firebase: Abfrage, um Daten basierend auf einer Bedingung auszuschließen

7

Ich bin in der Lage, die Daten für einen bestimmten Wert im Kind mit orderByChild und equalTo (cool, dass es auch für verschachtelte Kind funktioniert)

%Vor%

Gibt es einen einfachen Weg, um die Daten zu bekommen, wo ein bestimmter Wert nicht gefunden wird, im Grunde genommen etwas wie ein notEqualTo("somevalue") ?

    
Monu Surana 28.08.2016, 19:51
quelle

2 Antworten

10

Ich denke, ich habe die Lösung gefunden, und das ist mehr, wie die Datenbank entworfen werden sollte und tatsächlich habe ich jetzt die Absicht hinter der Firebase-Richtlinie verstanden

Ссылка

Original Design:

%Vor%

Aktualisiertes Design:

Abgesehen von der Speicherung der ID und des Namens des Benutzers sollten wir auch einen Knoten mit der ID selbst als Schlüssel speichern und ihn als wahr markieren

%Vor%

Mit dem aktualisierten Design, wenn ich ref.orderByChild('user/id1').equalTo(true)

ausführen
  

Ich würde als Child1 und Child 3

ausgegeben werden

und wenn ich ref.orderByChild('user/id1').equalTo(null) ausführen,

  

Ich würde Child2 als die Ausgabe

erhalten
    
Monu Surana 28.08.2016, 21:45
quelle
13

Im Firebase Query-Modell können Sie nicht auf Ungleichheit für einen Wert filtern.

Aber Sie können auf das Fehlen eines Wertes prüfen (im Wesentlichen: das Fehlen einer Eigenschaft). Zum Beispiel mit diesem Datenmodell:

%Vor%

Ich kann nach Kindern suchen, die keine user/name Eigenschaft haben mit:

%Vor%

Was zu dem einzigen Kind führt, das keinen Namen hat:

  

child3

Fühlen Sie sich frei, mit meinem jsbin zu spielen, um zu sehen, ob Sie weiterkommen: Ссылка

Update: Ich wusste, dass ich das schon vorher beantwortet hatte, aber ich konnte es vorher nicht finden. Hier ist der Betrogene: ist es mögliche Abfragedaten, die nicht der angegebenen Bedingung entsprechen? . Es sieht so aus, als ob ich einen Fehler habe, da ich eindeutig auf das Fehlen einer Eigenschaft im obigen Code testet.

    
Frank van Puffelen 28.08.2016 20:35
quelle