尝试从Firebase检索时遇到了一些麻烦。基本上我的团体表是这样的:
在这种情况下,在group ID -KpFibCHjJ1xpfLd07WJ
下,有一个account 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]);
}
});
});
然而,从for循环打印出来的是:
Object {
"-KpFiX2L7ENt6EBgrB0S": true,
}
有关如何在特定子项下提取唯一推送ID列表(-KpFiX2L7ENt6EBgrB0S)并将其存储到临时数组中的任何想法?
答案 0 :(得分:1)
我没有真正使用Firebase,但听起来你正试图从一组对象中提取特定的键?你可以做这样的事情让你走上正确的道路,但我仍然不确定这是否是你所要求的。
我创建了一组dumby数据,以尝试匹配您获得的结果。
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"]
这也是一个有效的codepen。
答案 1 :(得分:0)
诀窍是Object.keys(groupData.accounts)
:
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);
});
});