Firebase上的forEach方法使用未定义键的子快照调用回调

时间:2017-09-09 17:09:04

标签: javascript firebase firebase-realtime-database

我开始学习JavaScript几个月了,因为我是IOS开发人员,我更喜欢Firebase作为我网站的后端。

所以在今天的练习中,我曾经阅读过Firebase数据并提醒自己,我使用了这段代码,

  

注意:这些代码仅仅是我在工作期间使用的示例,它正式来自Firebase的文档。

var query = firebase.database().ref("users").orderByKey();

query.once("value")
  .then(function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      // key will be "ada" the first time and "alan" the second time
      var key = childSnapshot.key;
      // childData will be the actual contents of the child
      var childData = childSnapshot.val();

        alert(key); // also tried the (key.value); as well
  });

这是我的Firebase结构: Screenshot

和输出: Screenshot

1 个答案:

答案 0 :(得分:1)

这很有趣,但firebase不会像API更改那样频繁更新文档,如果您使用Angular 4+,则更糟糕。尝试重写您的代码,如下所示。在使用forEach迭代快照后需要返回一个布尔值:

    var query = firebase.database().ref("users").orderByKey();
    query.once("value", (function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
          // key will be "ada" the first time and "alan" the second time
          var key = childSnapshot.key;
          // childData will be the actual contents of the child
          var childData = childSnapshot.val();

          alert(key); // also tried the (key.value); as well
          return true;

      })
)