【发布时间】:2016-03-08 19:40:58
【问题描述】:
见 jsfiddle:http://jsfiddle.net/237ur2tf/14/
coinref.orderByChild("uuid").equalTo("xx")...
当数据库中有匹配项时,查询工作正常。 当不匹配时,既不调用回调函数,也不调用错误函数。
我是不是做错了什么?...有什么办法可以解决这个问题?
非常感谢。 帕特/
【问题讨论】:
标签: javascript firebase
见 jsfiddle:http://jsfiddle.net/237ur2tf/14/
coinref.orderByChild("uuid").equalTo("xx")...
当数据库中有匹配项时,查询工作正常。 当不匹配时,既不调用回调函数,也不调用错误函数。
我是不是做错了什么?...有什么办法可以解决这个问题?
非常感谢。 帕特/
【问题讨论】:
标签: javascript firebase
这是预期的行为。您小提琴中的相关 sn-p 稍长:
// Get by child uuid AND uuid exists
coinsRef.orderByChild("uuid")
.equalTo("4D4B2118-0435-439C-BA7C-99B9BD0DA7F4")
.on('child_added', function(snapshot) {
这段代码说“当有一个(现有的或新的)孩子添加到这个查询中时,用它的快照给我打电话”。由于没有孩子,child_added 事件不会触发。
如果你想检查是否有值,你应该使用value事件:
// Get by child uuid AND uuid exists
coinsRef.orderByChild("uuid")
.equalTo("4D4B2118-0435-439C-BA7C-99B9BD0DA7F4")
.on('value', function(snapshot) {
console.log("found Coin: 4D4B2118-0435-439C-BA7C-99B9BD0DA7F4");
如果你想对特定硬币做任何事情,你需要在回调中forEach():
snapshot.forEach(function(child) {
console.log("The coin has value: "+child.val());
})
你有什么理由不能通过它们的 uuid 存储硬币吗?听起来这已经是一个普遍唯一的标识;因此,如果可以使用该密钥存储它们,那么查找会便宜很多:
coinsRef.child("4D4B2118-0435-439C-BA7C-99B9BD0DA7F4")
.on('value', function(snapshot) {
console.log("The coin has value: "+snapshot.val());
})
【讨论】: