【问题标题】:How to add Firebase data to Array JavaScript如何将 Firebase 数据添加到数组 JavaScript
【发布时间】:2020-04-11 09:28:09
【问题描述】:

我有一个 Firebase 数据库,我正在尝试将数据添加到一个数组中。

问题在于,它将快照的每个值都放在数组中的索引 0 处。

var id = snap.child("id").val();

var emptyArray = [];
emptyArray.push(id);
console.log(emptyArray[0]);

结果:1​​ 2 3 4 5 6

var emptyArray = [];
emptyArray.push(id);
console.table(emptyArray[1]);

结果:未定义

我正在尝试使用的循环

for(var i = 0; i < id.length; i++) {
       emptyArray.push(id[i]);
   }

我刚刚尝试使 id 成为一个数组以使用循环,但它仍然返回索引 0 处的所有数据

var id = [snap.child("id").val()];

Firebase 的完整代码

$(document).ready(function(){
var pageNumber = document.getElementById("pageNumber").innerHTML;
var rootRef = firebase.database().ref().child("data/p"+pageNumber+"/users/");
rootRef.on("child_added", snap => {
   var id = [snap.child("id").val()];

   var emptyArray = [];
   for(var i = 0; i < id.length; i++) {
       emptyArray.push(id[i]);
   }
    console.log(typeof emptyArray[0]);    
 })
});

编辑:我对 JavaScript/HTML 很陌生

编辑 2:添加了一个我刚刚尝试过的循环

编辑 3:尝试将 id 设为数组

编辑 4:完整代码

【问题讨论】:

  • 您希望数组中包含什么 - 数据应该是什么样的?
  • @samdy1 ["1", "2", "3", "4", "5", "6"] - ID,但分开
  • 你能添加更多正在使用的代码吗(循环)
  • @AkshayBande 一开始我不是,这可能是我的失败,但我已经用我刚刚尝试过的循环更新了我的问题,它返回“未定义”
  • @samdy1 使用完整功能更新了我的代码

标签: javascript arrays firebase


【解决方案1】:

好的,所以我认为这个事件正在调用child_added 事件,所以快照snap 只是一个用户的快照。

每次您获得一个用户的结果时,您都会创建新数组并输入该用户的 ID,然后它会在 on 回调结束时超出范围。

相反,您需要在回调之外创建数组并添加到其中,如下所示:

$(document).ready(function(){
var pageNumber = document.getElementById("pageNumber").innerHTML;
var rootRef = firebase.database().ref().child("data/p"+pageNumber+"/users/");
var emptyArray = []; // Create the array outside the callback
rootRef.on("child_added", snap => {
   var id = snap.child("id").val();
   emptyArray.push(id); // Add the user's ID to the array
 });
console.log(emptyArray); // -> [1, 2, 3, 4, 5, 6]
});

【讨论】:

  • 没问题!很高兴它有帮助
猜你喜欢
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 2022-10-14
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2019-10-19
相关资源
最近更新 更多