我有這樣一個數據:檢索子記錄時父鍵是未知的火力地堡
"customers": {
"aHh4OTQ2NTlAa2xvYXAuY29t": {
"customerId": "xxx",
"name": "yyy",
"subscription": "zzz"
}
}
我需要通過客戶ID以檢索客戶。由於路徑限制,父密鑰只是B64編碼的郵件地址。通常我通過這個電子郵件地址查詢數據,但有幾次我只知道客戶ID。我試過這個:
getCustomersRef()
.orderByChild('customerId')
.equalTo(customerId)
.limitToFirst(1)
.once('child_added', cb);
這很適合客戶真正存在的情況。在相反的情況下,回調從未被調用。
我試圖value
事件,工作,但給我整棵樹開始編碼的電子郵件地址,所以我不能達到內部的實際數據。或者我可以嗎?
我發現這個答案Test if a data exist in Firebase,但再假定你,我知道所有的路徑元素。
getCustomersRef().once('value', (snapshot) => {
snapshot.hasChild(`customerId/${customerId}`);
});
我還能在這裏做什麼?
更新
我想我找到了解決方案,但感覺不對。
let found = null;
snapshot.forEach((childSnapshot) => {
found = childSnapshot.val();
});
return found;
可能的複製[如何查詢火力與特殊價值屬性的所有孩子裏面(http://stackoverflow.com/questions/25272919/how-to-query-firebase-for-財產與特定的價值,由內所有子女) –
同樣[這裏](http://stackoverflow.com/a/14965065/1300910)的回答可以幫助你 –
你能澄清這個問題嗎?它聲明你想'當父母關鍵字未知時檢索一個孩子記錄'。這就是firebase查詢所做的 - 通過一組節點查看它們是否有任何子節點與您指定的數據匹配 - 父節點不需要指定,只有父節點是父節點包含您正在查找的孩子的節點。 – Jay