javascript - 迭代 Firebase ref 以加载其子项

标签 javascript firebase firebase-realtime-database angularfire

我想从 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);
    }
  });

根据我的分析,问题是,$firebaseObject 对 firebase 进行异步调用,但不知道如何使其工作?

最佳答案

一种选择是获取集合的ref并迭代使用 data snapshot api即,

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;
  });
});

如果您想维护对对象的实际 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;

关于javascript - 迭代 Firebase ref 以加载其子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643000/

相关文章:

ios - 为什么我的 UITableViewCells 不显示信息?

firebase - Flutter:如何删除等待以利用 Firebase 离线持久性?

javascript - 运行 npm run compile :sass returns error: npm ERR! 缺少脚本:compile:sass

javascript - 在网络浏览器中重新加载时滚动位置恢复规则

ios - 使用 Firebase 电话身份验证未收到通知

javascript - 如何使用 javascript 从 firebase 检索数据

javascript - jQuery 移动 : Can't retrieve JSON data to populate list on HTML

javascript - JS 中的按钮和文本输入

swift 4 : Firebase Timestamp

ios - 在另一个 Controller 中从 TableView 编辑 Firebase 数据