0

Ich verwende diese Abfrage, um zu überprüfen, ob die Daten auf meiner Firebase existieren (mit AngularFire2)Ist die Abfrage an! EqualTo: null auf Firebase möglich?

let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', equalTo: null } }); 

funktioniert ziemlich gut, aber ich muß auch eine inverse Abfrage machen.

Gefällt Ihnen dieses

let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', equalTo: !null } }); 

Das Problem ist. Diese zweite Abfrage, kehrt nur dann, wenn der Wert TRUE ist, ich bin Speichern einer Zeitmarkierung/driveruid/accountHistory/genehmigt‘

Es gibt eine Möglichkeit, nur zu überprüfen, ob der Wert vorhanden ist oder gar nicht existiert?

Danke!

+0

Mögliches Duplikat von [ist es möglich, Abfragedaten, die nicht der angegebenen Bedingung entsprechen?] (Https://stackoverflow.com/questions/28582223/is-it-possible-query-data-that-are-not -Quell-zur-spezifizierten-Bedingung) –

+0

Es gibt keinen * Wert-Check. Aber welche Werte speichern Sie dort? Sie könnten mit 'startAt ("a"). EndAt ("z"). LimitToFirst (1) '(abhängig von dem Wertebereich, den Sie haben können) irgendwo hinkommen. –

+0

@FrankvanPuffelen Ich schätze die Hilfe! Meine Frage hatte nur 2 Fälle. * Das Fehlen von Daten * Die Existenz eines TIMESTAMP Rohans Vorschlag funktionierte sehr gut! Danke noch einmal! –

Antwort

6

Aus der Firebase docs, Abfragen mit orderByChild Rückkehr Listen in der folgenden Reihenfolge: -

Kinder mit einem Nullwert für den Schlüssel angegeben Kindes an erster Stelle.

Kinder mit dem Wert false für den angegebenen Kindschlüssel kommen als nächstes. Wenn mehrere Kinder den Wert false haben, werden sie lexikografisch nach Schlüssel sortiert.

Kinder mit einem Wert von True für den angegebenen Kindschlüssel kommen als nächstes. Wenn mehrere Kinder den Wert "wahr" haben, werden sie lexikografisch nach Schlüssel sortiert.

Kinder mit einem numerischen Wert kommen als nächstes, sortiert in aufsteigender Reihenfolge. Wenn mehrere untergeordnete Elemente denselben numerischen Wert für den angegebenen untergeordneten Knoten haben, werden sie nach Schlüssel sortiert.

Strings kommen nach Nummern und sind lexikografisch in aufsteigender Reihenfolge sortiert. Wenn mehrere untergeordnete Elemente denselben Wert für den angegebenen untergeordneten Knoten haben, werden sie lexikografisch nach Schlüssel geordnet.

Objekte kommen zuletzt und werden lexikografisch nach Schlüssel in aufsteigender Reihenfolge sortiert.

Während Ihre erste Abfrage funktioniert, können Sie für Ihre zweite Abfrage den folgenden Code versuchen.

let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', startAt: false }); 

dies Dadurch würde Ihre Abfrage-Ergebnisse nicht mit einem Wert von null enthalten Daten für Ihr Kind-Knoten.

Ich würde jedoch empfehlen, dass Sie sicherstellen, dass die Daten auf dem untergeordneten Knoten für alle Knoten vom gleichen Typ sind, um die Wahrscheinlichkeit von Klassenausnahmen und anderen Fehlern zu minimieren. Dies ist eher ein Hack.

+0

Danke Rohan Stark! Funktioniert erstaunlich! –

Verwandte Themen