簡體   English   中英

Firebase orderByChild equalTo在沒有數據時掛起

[英]Firebase orderByChild equalTo hangs when no data

參見jsfiddle: http : //jsfiddle.net/237ur2tf/14/

coinref.orderByChild("uuid").equalTo("xx")...

數據庫中存在匹配項時,查詢工作正常。 如果沒有匹配項,則不會調用回調函數或錯誤函數。

我做錯什么了嗎?...解決方法是什么?

非常感謝。 拍/

那是預期的行為。 小提琴中的相關代碼段稍長:

// 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());
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM