迭代Firebase中的多个孩子

时间:2016-11-26 23:05:42

标签: javascript reactjs firebase firebase-realtime-database state

我正在研究React应用程序,并希望将一组组织添加到状态树中。可以通过以下方式检索每个组织:

return firebase.database().ref('/organizations/' + org).once('value').then((snapshot) => {
        return snapshot.val();
      });

我正在尝试:

var orgs = user.organizations.map((org)=> {
  return firebase.database().ref('/organizations/' + org).once('value').then((snapshot) => {
    return snapshot.val();
  });
});

this.setState({
  organizations: orgs,
});

哪个不起作用,因为在添加到状态之前未解决承诺。有没有人有解决方案?

1 个答案:

答案 0 :(得分:1)

这些情况下的解决方案是将需要快照的代码移动到回调中:

var ref = firebase.database().ref('/organizations/');
var promises = user.organizations.map(org => ref.child(org).once('value'));
Promise.all(promises).then(snapshots => {
    // all snapshots have loaded
    // TODO: call this.setState() with all snapshots.
})

让我们看看这是否更好:

var promises = user.organizations.map(org => {
  return firebase.database().ref('/organizations/' + org).once('value')0;
});

Promise.all(promises).then(snapshots =>
  var orgs = snapshots.map(snapshot => snapshot.val());
  this.setState({
    organizations: orgs,
  })
})