这可能是一个非常简单的问题,但我无法做到。因为我是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);
}
答案 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);
}