如何获取firebase

时间:2017-01-26 14:58:50

标签: javascript firebase firebase-realtime-database

这可能是一个非常简单的问题,但我无法做到。因为我是firebase和javascript的新手,虽然搜索了很多。这是我的firebase数据库的结构。

{ "messages" : {
"AGA Clinical Trials" : {
  "test" : {
    "-KbQDSG-3AXKjk1erhWO" : {
      "senderName" : "abc@xyz.com",
    }
  },
  "test-1" : {
    "-KbQECK7edEok0treaLCI" : {
      "senderName" : "abc@xyz.com",
    }
  }
}

}

我想要的是AGA临床试验的所有节点列表,即test-test-1。我正在使用此查询firebase。

var siteListref = firebase.database().ref('messages').child('AGA Clinical Trials')

    siteListref.orderByKey().on('value', function(snapshot){

        var userName = snapshot.val();
        console.log('user name', userName);
    }

1 个答案:

答案 0 :(得分:0)

当您在某个位置收听值事件时,您会获得一个包含该位置值的快照。因此,在您的情况下,快照将包含AGA Clinical Trials下的所有子节点。

您可能正在寻找各个子节点,这意味着您应该遍历生成的快照:

var siteListref = firebase.database().ref('messages').child('AGA Clinical Trials')

siteListref.on('value', function(snapshot){
    snapshot.forEach(function(trialSnapshot) {
        var userName = trialSnapshot.val();
        console.log('user name', userName);
    });
}

forEach()迭代器中的确切代码取决于您未包含的每个子节点下的数据结构。

在Firebase中处理子节点的一种更惯用的方法是订阅子事件。例如,通过收听child_added,您可以摆脱forEach()循环:

siteListref.on('child_added', function(snapshot){
    var userName = snapshot.val();
    console.log('user name', userName);
}