我正在尝试获取firebase对象的第一个子节点。我的参考文件如下:
var sitesToVisitRef = firebase.database().ref('sitesToVisit')
我知道引用是有效的,因为我可以写信给它。我的数据结构如下所示:
sitesToVisit:
arstechnica-com:
url: "https://arstechnica.com"
但是,我不知道密钥(arstechnica-com),但我需要获取网址。
我正在尝试使用此代码:
var nextUrl;
sitesToVisitRef.limitToFirst(1).once('value', function(snapshot) {
console.log("snapshot key" + snapshot.key);
console.log("snapshot.val.url = " + snapshot.val().url);
console.log("snapshot.val" + snapshot.val());
nextUrl = snapshot.val().url;
}
});
但是snapshot.key记录为" sitesToVisit",而不是" arstechnica-com"。
非常感谢任何帮助。非常感谢你!
答案 0 :(得分:5)
试试这个:
var nextUrl;
sitesToVisitRef.limitToFirst(1).once('value', function(snapshot) {
for(var key in snapshot.val()){
console.log("snapshot key" + key);
console.log("snapshot.val.url = " + snapshot.val()[key].url);
console.log("snapshot.val" + snapshot.val()[key]);
nextUrl = snapshot.val()[key].url;
}
});
snapshot
中的所有内容是sitesToVisit
中包含所有子项的数组,因为您使用limitToFirst(1)
它只是最好的一个,但它仍然是一个数组,因此您需要迭代该数组以获取每个孩子的密钥。