Unterschiede zwischen 'child_added' und 'value' Firebase?
Ich sehe einen kleinen Unterschied zwischenchild_added
undvalue
bei der Rückgabe von Daten in Firebase. @ Verwendvalue
Ich kann testen, obsnapshot.val()
hat etwas zurückgegeben oder verwendet es nicht wie folgt:
Daten abrufen:
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 ichconsole.log
wie der Wert zurückgegeben wurdesnapshot.val()
gibt die Daten auf der Ebene des generierten Schlüssels zurück:
{234jl23jl4kj23 --
{data --
//.. data
userName : "testUser1",
userPass: "password123"}}
Wenn ich die Daten mit @ erhalchild_added
:
ref.orderByChild('appUserName')
.equalTo(issuer)
.once('child_added')
.then(function (snapshot) {
var value = snapshot.val();
if (value) {
// Has Value...
}else{
//Has No Value...
}
s wird nicht einmal in die @ geh.then
Funktion wennissuer
wird nicht als Wert für @ gefundappUserName
, also kann ich in der Firebase-Funktion nicht sehen, ob sie einen Wert hat oder nicht. Auch der Wegchild_added
gets data ist eine Ebene tiefer. Anstatt den generierten Schlüssel zurückzugeben, werden die Werte in diesem Schlüssel zurückgegeben:
{data --
//.. data
userName : "testUser1",
userPass: "password123"}
Ich würde es vorziehen, es auf diese Weise zu verwenden, weil es eine Schleife weniger wäre, die ich überprüfen müsste, um zuerst die Daten im Schlüssel zu erhalten und dann die Objekte im Datenpunkt zu durchlaufen. Jedoch, wennissuer
ist nicht inappUserName
es wird nicht in die Funktion für mich gehen, auch nur ein @ zu tif
else
Gibt es eine Möglichkeit, so tief wie @ zu bohrchild_added
ohne Schleife, aber trotzdem in der Lage, ein @ zu machif else
, um zu überprüfen, ob dassnapshot.val()
hat irgendetwas?