首页 文章

Firebase检索嵌套数据

提问于
浏览
1

尝试从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)并将它们存储到临时数组中的任何想法?

2 回答

  • 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);
        });
    });
    
  • 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 .

相关问题