2016-12-30 44 views
1

我有一個火力點數據庫如下結構:對數組做火石基地支持查詢嗎?

enter image description here

試圖從就業陣列查詢數據,但總是得到一個空回來。谷歌周圍,但沒有得到明確的答案,無論firebase支持查詢陣列。以下是我使用的代碼。有沒有辦法讓數組[1]返回而不是null?

firebaseApp.database() 
    .ref('tests') 
    .orderByChild('jobs') 
    .equalTo('bbb') 
    .on("value",function(data){ 
     data.forEach(function(subdata){ 
     console.log('===> main.js', subdata.val()); 
     }); 
}, function (errorObject) { 
    console.log("===> main.js The read failed: " + errorObject.code); 
}); 

回答

0

首先,選擇具有ref("tests/item1/jobs")jobs節點,然後因爲你是按值搜索你有orderByValue訂購的物品。

equalTo方法的行爲基於應用的排序有所不同。

要匹配的值。參數類型取決於在此查詢中使用了哪個orderBy *() 函數。指定一個與 orderBy *()類型相匹配的值。當與orderByKey()組合使用時,值 必須是字符串。

firebaseApp.database() 
    .ref("tests/item1/jobs") 
    .orderByValue() 
    .equalTo('bbb') 
    .on("value",function(data){ 
     data.forEach(function(subdata){ 
     console.log('===> main.js', subdata.val()); 
     }); 
}, function (errorObject) { 
    console.log("===> main.js The read failed: " + errorObject.code); 
}); 
+0

請忽略我的最後一條評論。我再次檢查它並在我的代碼中找到語法錯​​誤。我可以用你的建議代碼重新獲得數組。 – sglai

+0

實際上我有另一個問題,參考路徑中的「item1」是動態的。所以事先不知道。在這種情況下,我們可以做什麼?我試過「.child('jobs')」,但它不起作用。 – sglai

+0

感謝您的幫助。很好理解firebase數據庫的限制。 – sglai