Firebase -按值搜索子节点
Firebase - Search a child by value
假设我的Firebase上有这些数据:
https://mygame.firebaseio.com/player
{
"player": {
"bloodgulf01": {
"username": "bloodgulf01",
"uid": "twitter:102032",
"level": 2,
"map": 3,
"x": 51,
"y": 12
},
"damjanovic": {
"username": "damjanovic",
"uid": "github:77371",
"level": 5,
"map": 2,
"x": 21,
"y": 44
}
}
}
我如何通过uid
搜索并得到结果的snapshot
?
这是我尝试过的:
new Firebase("https://mygame.firebaseio.com/player")
.startAt(authData.uid)
.endAt(authData.uid)
.once('value', function(snap) {
console.log('accounts matching UID of ' + authData.uid, snap.val())
});
返回:accounts matching UID of github:123456789 null
,尽管/player/
的数据中有uid
…
按要筛选的子元素排序,然后再筛选:
new Firebase("https://mygame.firebaseio.com/player")
.orderByChild('uid')
.equalTo(authData.uid)
.once('child_added', function(snap) {
console.log('account matching UID of ' + authData.uid, snap.val())
});
因为你只期望一个玩家,你可能可以通过once('child_added'
。如果您需要处理具有相同uid的潜在多个玩家,则:
.on('child_added', function(snap) {
console.log('account matching UID of ' + authData.uid, snap.val())
});
或
.once('value', function(snap) {
snap.forEach(function(child) {
console.log('account matching UID of ' + authData.uid, child.val())
});
});
我同意Chrillewoodz对结构的看法:我总是期望看到uid
作为用户集合的键。在这种情况下,您可以使用上面的方法搜索名称。
请记住,Firebase中的一切都是url。你可以这样做来获取你想要的数据:
'https://mygame.firebaseio.com/player/' + uid
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- Javascript关键字搜索子类Div值
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 在子节点上重复
- 使用javascript使用HTML搜索确切的子节点
- 如何在对象内部搜索子节点,并在找到时返回相关路径
- Firebase -按值搜索子节点