无论我做什么,我似乎无法找到一种方法来访问孩子" onSite",当我记录snapshot.val()时显示为存在,但我不能弄清楚如何访问它。
代码:
firebase.database().ref().child("users").orderByChild('facebook_id').equalTo(fbID).once("value").then(function(snapshot) {
console.log(snapshot.val());
console.log(snapshot.child("onSite").val());
});
它不应该为空,它应该是假的。我不能做孩子(" 4mUUjF ......")。孩子(" onSite")。val()因为我不知道ID是什么在查询之前。使用每个循环不起作用,它只循环通过第一级,即ID。
答案 0 :(得分:2)
获取快照val,然后使用Object.keys
方法找到密钥。这将允许您进入快照。一旦到达那里,就像访问任何其他对象一样简单。
firebase.database().ref().child("users").orderByChild('facebook_id').equalTo(fbID).once("value").then(function(snapshot) {
let snap = snapshot.val();
let key = Object.keys(snap)[0]
console.log(snap[key].onSite);
})
答案 1 :(得分:2)
对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您的代码需要使用Snapshot.forEach()
:
firebase.database().ref().child("users").orderByChild('facebook_id').equalTo(fbID)
.once("value").then(function(result) {
result.forEach(function(snapshot) {
console.log(snapshot.val());
console.log(snapshot.child("onSite").val());
});
});