Chcę indywidualnie załadować każde dziecko obiektu z bazy ogniowej.
Nieobrobiony fragment kodu, aby lepiej wyjaśnić tę ideę, jest podany poniżej:
var userId = firebase.auth().currentUser.uid;
firebase.database().ref("/users/"+userId+"/foo/list").once("value").then(function(list) {
var reffoo = firebase.database().ref().child("/foo/");
for (var i = 0; i < list.length; i++) {
ref = reffoo.child(list[i]);
$scope.foo[ref] = $firebaseObject(ref);
}
});
Zgodnie z moją analizą problem polega na tym, $ firebaseObject wykonuje połączenie asynchroniczne z firebase ale nie wiesz, jak to działa?
Odpowiedzi:
4 dla odpowiedzi № 1Jedną z opcji jest uzyskanie ref
do swojej kolekcji i powtórzyć użycie
data snapshot
api to znaczy.,
var ref = firebase.database().ref("/users/"+userId+"/foo/list");
ref.once("value", function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
$scope.foo[childKey] = childData;
});
});
Jeśli chcesz zachować aktualny angularFire
odniesienie do obiektu $firebaseArray
przychodzi, aby pomóc:
var list = $firebaseArray(ref);
// add an item
list.$add({ foo: "bar" }).then(...);
// remove an item
list.$remove(2).then(...);
// make the list available in the DOM
$scope.list = list;