Javascript Firebase检索嵌套数据

Javascript Firebase检索嵌套数据,javascript,json,firebase,firebase-realtime-database,nosql,Javascript,Json,Firebase,Firebase Realtime Database,Nosql,我在试图从Firebase取回时遇到了一些麻烦。基本上我的分组表是这样的: 在这种情况下,在组ID-KpFibCHjJ1xpfLd07WJ下,有一个帐户ID-KpFiX2L7ENt6EBgrB0S。按权利将有不止一个帐户,我仍然在数据插入工作 我试图检索特定组下帐户的唯一推送ID列表: var accounts = []; var query = firebase.database().ref('groups').orderByChild('address').equalTo('Blk

我在试图从Firebase取回时遇到了一些麻烦。基本上我的分组表是这样的:

在这种情况下,在
组ID-KpFibCHjJ1xpfLd07WJ
下,有一个
帐户ID-KpFiX2L7ENt6EBgrB0S
。按权利将有不止一个帐户,我仍然在数据插入工作

我试图检索特定组下帐户的唯一推送ID列表:

var accounts = [];
    var query = firebase.database().ref('groups').orderByChild('address').equalTo('Blk 165');
    query.once( 'value', data => {
        data.forEach(userSnapshot => {
            let groupData = userSnapshot.val();
            console.log(groupData );
            accounts.push(groupData .accounts);

            for(var i = 0; i < accounts.length; i++){
              console.log(accounts[i]);
            }
        });
    });

关于如何提取特定子项下的唯一推送ID(-KpFiX2L7ENt6EBgrB0S)列表并将其存储到临时数组中,您有什么想法吗?

我并不真正使用Firebase,但听起来您好像在尝试从对象数组中提取特定键?你可以这样做,让你走上正确的道路,但我仍然不确定这是否是你所要求的

我已经创建了一组愚蠢的数据,试图匹配您得到的结果

var arr = [
  { 
    "-KpFiX2L7ENt6EBgrB0S" : true 
  },
  { 
    "-MXDOFKFFM3738FJF" : true 
  }
]

// Will store the info you want
var arr2 = []

for(var i = 0; i < arr.length; i++) {
  var temp = Object.keys(arr[i]).toString()
  arr2.push(temp)
}

console.log(arr2) // ["-KpFiX2L7ENt6EBgrB0S", "-MXDOFKFFM3738FJF"]
var-arr=[
{ 
“-KpFiX2L7ENt6EBgrB0S”:真
},
{ 
“-MXDOFKFFM3738FJF”:真
}
]
//将存储您想要的信息
var arr2=[]
对于(变量i=0;i

这里还有一个可行的方法。

诀窍是
Object.keys(groupData.accounts)


是的,这就是我想做的。但如何将firebase返回的数据填充到数组中?是这样的:var arr=groupData.accounts;那可能行得通。如果您使用console.log just groupData.accounts,它会打印出什么?当我在控制台打印时,它只显示arr[object object],看起来它是一个数组,所以您不应该将一个数组推入另一个数组。也许只是将帐户重新分配给“accounts=groupData.accounts”之类的东西。然后以类似于我在解决方案中所做的方式遍历帐户。让我知道这是否有帮助。事实上,这可以通过弗兰克建议的一行完成!非常感谢你的帮助!我明白了,我明白了。这很有魅力!非常感谢!!
var arr = [
  { 
    "-KpFiX2L7ENt6EBgrB0S" : true 
  },
  { 
    "-MXDOFKFFM3738FJF" : true 
  }
]

// Will store the info you want
var arr2 = []

for(var i = 0; i < arr.length; i++) {
  var temp = Object.keys(arr[i]).toString()
  arr2.push(temp)
}

console.log(arr2) // ["-KpFiX2L7ENt6EBgrB0S", "-MXDOFKFFM3738FJF"]
var accounts = [];
var query = firebase.database().ref('groups').orderByChild('address').equalTo('Blk 165');
query.once( 'value', data => {
    data.forEach(userSnapshot => {
        let groupData = userSnapshot.val();

        let accounts = Object.keys(groupData.accounts);

        console.log(accounts);
    });
});