【发布时间】:2019-04-13 21:47:00
【问题描述】:
尝试读取(并期望)这样的嵌套数组:
var array = [
0: {subArrayy: {...}, title: "Title"},
1: {subArray]: {...}, title: "Title"},
...
但是在阅读和(!)输出之后,结果很好。我的 Web 控制台向我显示了数组,一切似乎都很好。但是做 array.length 返回 0。任何迭代都返回 undefined。
我已经尝试使用我之前看到的 ladosh _.toArray 东西,但它完全没有任何作用。
var locations = []; // Empty array
var ref = db.ref("locations/");
ref.once("value", function(snapshot) {
snapshot.forEach(function(item) {
var itemVal = item.val();
locations.push(itemVal); // Adding new items seems to work at first
});
});
console.log(locations, locations.length);
输出:
我希望它是可迭代的,就像我可以使用 array0 进行导航一样。
【问题讨论】:
-
请同时显示写入数据库的代码和读取数据库的代码。现在我们必须猜测“位置”下的数据实际上是什么样的。
-
您的 console.log 在您的异步函数
ref.once完成之前被调用。 Chrome 最初会记录空数组,然后在该过程完成后填写缺失的部分,显然,愚蠢的是,数据长度除外。你应该把你的日志移到ref.once。 -
@DougStevenson 我用这个作为我的参考link 这是读取它的代码。我在弄清楚如何将 JSON 与 Javascript 一起使用时遇到了很多麻烦,因此决定通过 Firebase 控制台手动上传我的代码。
-
我要求您也编辑问题以显示写入数据库的代码,或者至少描述直接存在于位置下的数据结构。没有看到这一点,我们不知道阅读代码到底会收到什么。
标签: javascript arrays firebase firebase-realtime-database