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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage