Normalerweise, wenn ich überprüfen, ob die Datenbank einen Knoten enthält ich so etwas wie:Firebase vorhanden ist() vs null
users = dbReference.getReference("users").child(someUser);
ich nicht hasChild()
verwenden, weil ich auf einem großen Daten-Set weiß, das irgendwann in Anspruch nehmen kann Abfrage. Vor kurzem stieß ich jedoch auf die Methode exists()
found here on documentation Jetzt fragte ich mich nur, wie unterscheidet sich das von mir nur überprüft, ob der Schnappschuss Null ist? Und wie funktioniert die exists()
Funktion? Wie hasChild()
iteriert über den Datensatz was macht esists()
?
Und ist es besser als die Überprüfung auf Null? ist die Dokumentation nicht viel sagen
dank
UPDATE 1
Angenommen, ich habe den folgenden Knoten:
Wenn ein Benutzer anmelden möchte ich diesen Knoten überprüfen Überprüfen Sie, ob der Benutzername vergeben wurde:
userTakenNode.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.hasChild(enteredUsername)) {
register();
}
}
Wenn der Benutzername nicht vergeben ist, registriere ich den Benutzer mit diesem Benutzernamen und füge den Benutzernamen dem obigen Knoten hinzu. Jetzt benutze ich hasChild() zu meinem Verständnis, obwohl dies über den ganzen Knoten iterieren wird, bis es es findet und zurückgeben wird, sonst wird nichts zurückgeben. Bei einem großen Datensatz kann dies sehr lange dauern.
Gibt es eine schnellere Möglichkeit, den Datensatz abzufragen?
Der Code, den Sie Sätze geteilt in der Datenbank einen Verweis auf eine Position nach oben. Es prüft nicht, ob ein Knoten existiert. –
@FrankvanPuffelen Hallo, ich verstehe den Code oben, den ich geteilt habe, ist ein Verweis auf eine Datenbank. Ich habe gerade gezeigt, wie ich normalerweise zu einem Kindknoten innerhalb der Datenbank kommen würde, meine Frage ist. Unter der Annahme, dass der obige Datenbankverweis null ist (also nicht in der Datenbank existiert), verwende ich normalerweise eine if-Anweisung, um dies zu testen, und teste, ob dataSnapshot == null ist. Wie unterscheidet sich die Funktion 'exists()' von der Verwendung von null zum Überprüfen und welche ist besser zu verwenden? Danke – memoryManagers
Die Datenbankreferenz, die Sie freigegeben haben, wird * nie * null sein. Bitte aktualisieren Sie Ihre Frage so, dass sie den minimalen, vollständigen Code enthält, nach dem Sie fragen. Es wird viel einfacher sein, damit zu helfen. –