【问题标题】:How to retrieve an array of objects from a firebase realtime database using javascript?如何使用javascript从firebase实时数据库中检索对象数组?
【发布时间】:2018-01-02 13:03:49
【问题描述】:

这是我的数据库。

我正在尝试遍历每个对象并将“名称”值打印到控制台。

这是我的 JS 代码

var scores = [];

var database = firebase.database();

database.ref().once("value", function(snap){
   scores = snap.val();
});

console.log(scores[1].Name);

据我了解,这就是发生的事情。

snap = {rootKey : [对象数组]

scores = snap.val() = [{Name : Babara}, {Name : Josh}, ......]

scores[1] = {姓名:乔希}

scores[1].Name = 乔希

编辑

当我尝试打印整个数组时,我得到了这个。

database.ref().once("value", function (snap) {
    scores = snap.val();
    console.log(scores);
    console.log(scores[1]);
});

如此处所示,我无法访问数组内的对象。

【问题讨论】:

  • 你的函数,作为一个回调,正在运行之后 console.log运行。如果把日志语句移到回调函数中呢?
  • @csp713 试过这个
  • database.ref().once("value", function(snap){ scores = snap.val(); console.log(scores[1].Name); });
  • console.log(scores[1]); 这不起作用,因为您可以看到键是唯一的 id

标签: javascript firebase firebase-realtime-database


【解决方案1】:

试试

database.ref().once("value", function(snap){
   snap.forEach(function(childSnap) {
      scores['Name'].push(childSnap.val().Name);
      scores['Score'].push(childSnap.val().Score);
   });
});

【讨论】:

  • database.ref("/slo******").once("value", function(snap){ scores = snap.val(); }); console.log(scores[1].Name); 我试过了,但效果不佳。
  • 虽然这似乎可行。 database.ref("4").once("value", function (snap) { console.log(snap.val().Name); });
  • 好的,这是slo**** 你的顶级节点,我认为它是一个子节点。 database.ref() 很好
  • 顶部节点。
  • 试试scores.push(snap.val())
猜你喜欢
  • 2022-11-02
  • 2018-09-11
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 2019-04-16
  • 2020-12-09
  • 2022-01-08
相关资源
最近更新 更多