Dies ist eine Methode in einer Fabrik:DataSnapshot.val() nicht zurück verarbeitete Wert sofort
kbUser.getCurrentUserDetails = function(){
return $rootScope.ref.child("user/" + firebase.auth().currentUser.uid).once('value', function(snap){
return snap.val();
});
}
ich diese Methode in einem Controller wie folgt aufrufen:
return kbUser.getCurrentUserDetails().then(function(details){
// Here I need to do .val() once again
for (var attrname in details.val()) { kbUser.userObject.details[attrname] = details.val()[attrname]; }
kbUser.copyFirebaseDataToUser(firebaseUser).then(function(){
return true;
});
});
Dies ist, was Ich bekomme zurück: details = W {A: P, W: U, g: ve}
, die nicht mit meiner Datenbank übereinstimmt.
Wenn ich die details
Variable hier lesen, habe ich details.val()
wieder zu bekommen das erwartete JSON-Objekt aus meiner Datenbank zu tun. Ich verstehe nicht, warum das Ergebnis von snap.val()
nicht in der Methode zurückgegeben wird, sondern nur die 'rohe' Firebase-Daten-Snapshot snap
. Weiß jemand, warum das passiert?
Angenommen, das Werk ist korrekt eingerichtet.
Ich mache das eigentlich schon. Ich fügte in meinem ersten Beitrag die tatsächliche Art und Weise hinzu, wie ich die Funktion anrufe. –