请参阅jsfiddle:http://jsfiddle.net/237ur2tf/14/
coinref.orderByChild("uuid").equalTo("xx")...
当数据库中存在匹配项时,查询工作正常。 如果没有匹配,则不会调用回调函数或错误函数。
我做错了什么?......这会是什么方式?
非常感谢。 PAT /
答案 0 :(得分:2)
这是预期的行为。小提琴的相关片段稍长:
// 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());
})