San*_*ggy 2 javascript firebase angularfire firebase-realtime-database
我想从 firebase 单独加载对象的每个子项。
下面给出了一个非工作代码片段,可以更好地解释这个想法:
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);
}
});
Run Code Online (Sandbox Code Playgroud)
根据我的分析,问题是$firebaseObject 对 firebase 进行异步调用,但不知道如何使其工作?
一种选择是获取ref您的集合并使用data snapshotapi迭代,
即,
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;
});
});
Run Code Online (Sandbox Code Playgroud)
如果您想维护angularFire对对象的实际引用,则$firebaseArray可以提供帮助:
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;
Run Code Online (Sandbox Code Playgroud)