通过Firebase中的嵌套属性获取用户
我在Firebase中尝试访问一些嵌套代码。我知道如何在第二个用户中访问,但第一个用户我不知道如何访问 我有下面第二个代码,但不是第一个。我怎么做同样的事情通过Firebase中的嵌套属性获取用户,firebase,Firebase,我在Firebase中尝试访问一些嵌套代码。我知道如何在第二个用户中访问,但第一个用户我不知道如何访问 我有下面第二个代码,但不是第一个。我怎么做同样的事情 ref.child('users') .orderByChild('username') .equalTo(username) .once('value', function (snapshot){ console.log(snapshot.val()) }) 对于下面的数据 users { "first_
ref.child('users')
.orderByChild('username')
.equalTo(username)
.once('value', function (snapshot){
console.log(snapshot.val())
})
对于下面的数据
users {
"first_user" : {
"info" : {
"admin" : false,
"email" : "adaaasds",
"first" : "Sam",
"last" : "Cassell",
"username" : "samcassell"
}
},
"second_user" : {
"admin" : false,
"email" : "johndoe@gmail.com",
"first" : "john",
"last" : "doe",
"username" : "johndoe"
}
}
在您的示例中,要查询像
first\u user
这样的结构化数据,您需要指定子级的深度路径:
ref.child('users'))
.orderByChild('信息/用户名')
.equalTo(用户名)
.once(值),函数(快照){
snapshot.forEach(函数(childSnapshot){
log(childSnapshot.key,JSON.stringify(childSnapshot.val());
});
})
对于希望只有一个子项匹配的查询,可以调用limitToFirst
,并可以像这样使用forEach
:
ref.child('users'))
.orderByChild('信息/用户名')
.equalTo(用户名)
.limitToFirst(1)
.once(值),函数(快照){
var用户;
forEach(函数(childSnapshot){user=childSnapshot.val();});
如果(用户){
log(JSON.stringify(child.val());
}否则{
console.log('未找到用户');
}
})
那么,有没有办法检索从snapshot.val()返回的对象。e、 它返回Object{firstUser:Object}
。我唯一能想到的方法是Object.keys(snapshot.val())[0]
,但这似乎已经更新了答案。显然,我之前的评论是疯狂的。真的,我应该等到喝了早上的咖啡后再回答任何问题。实际上,我只是改用了一次(“child_added”)。我不认为这有什么大不了的!使用一次('child_added')
是一个很好的解决方案,但是如果密钥不存在,则不会发生任何事情(除非以后添加)。这可能不是问题,但要记住。