Ich sehe einen kleinen Unterschied zwischen child_added
und value
bei der Rückgabe von Daten in Firebase. Mit value
ich testen, um zu sehen, ob snapshot.val()
etwas oder nicht verwenden es wie folgt zurückgegeben hat:Unterschiede zwischen "child_added" und "value" firebase?
Daten holen:
ref.orderByChild('appUserName')
.equalTo(issuer)
.once('value')
.then(function (snapshot) {
var value = snapshot.val();
if (value) {
// Has Value...
}else{
//Has No Value...
}
Datenstruktur:
AppUsers --
234jl23jl4kj23 --
data --
//.. data
userName : "testUser1",
userPass: "password123"
9873h23foiu34u
//same structure
o8987s52df134o
//same structure
Wenn ich console.log
, wie der Wert hat returned snapshot.val()
es gibt die Daten auf der Ebene des generierten Schlüssels zurück:
{234jl23jl4kj23 --
{data --
//.. data
userName : "testUser1",
userPass: "password123"}}
Wenn ich die Daten child_added
mit:
ref.orderByChild('appUserName')
.equalTo(issuer)
.once('child_added')
.then(function (snapshot) {
var value = snapshot.val();
if (value) {
// Has Value...
}else{
//Has No Value...
}
Es wird nicht einmal die .then
Funktion geht in, wenn issuer
nicht als Wert appUserName
gefunden wird, so kann ich nicht in der Feuerbasis Funktion sehen, ob es einen Wert bekam oder nicht. Auch der Weg child_added
bekommt Daten ist eine Ebene tiefer. Statt an den generierten Schlüsseln zurückkehr es gibt die Werte in diesem Schlüssel:
{data --
//.. data
userName : "testUser1",
userPass: "password123"}
Ich würde es vorziehen, es auf diese Weise zu verwenden, da es eine weniger Schleife wäre würde ich zunächst prüfen muß, um die Daten innerhalb der bekommen Schlüssel, dann durchlaufen Sie die Objekte im Datenpunkt. Allerdings, wenn issuer
nicht in appUserName
pflegt es in die Funktion geht für mich selbst ein if
else
Gibt es eine Möglichkeit zu tun, so tief wie child_added
ohne Looping zu bohren, in aber noch in der Lage sein, ein if else
zu tun, um zu überprüfen, ob die snapshot.val()
hat irgendwas?
Ah, das macht dann Sinn. Vielen Dank. – Chipe