我試圖交朋友系統,但在邀請接受時,我必須洗掉他串列中一個人的邀請,但沒有鑰匙我不能這樣做。
![如何在沒有快照鍵的情況下從 firebase 獲取價值 [JS]](https://img.uj5u.com/2021/12/20/21a215a43d7340288ecc53339307c419.png)
如何在資料庫中按值(在本例中為 uid)獲取快照鍵?
uj5u.com熱心網友回復:
Firebase 實時資料庫查詢在單個路徑上作業,然后在每個直接子節點下的固定路徑上對值進行排序/過濾。在您的情況下,如果您知道用戶是處于活動狀態還是待處理狀態,則可以通過以下方式找到特定值:
const ref = firebase.database().ref("friends");
const query = ref.child("active").orderByValue().equalTo("JrvFaTDGV6TnkZq6uGMNICxwGwo2")
const results = query.get();
results.forEach((snapshot) => {
console.log(`Found value ${snapshot.val()} under key ${snapshot.key}`)
})
無法同時跨節點active和pending節點執行相同的查詢,因此您要么必須為每個節點執行單獨的查詢,要么更改資料模型以具有單個平面用戶串列。在這種情況下,您可能會將每個用戶的狀態和 UID 存盤為子屬性,并使用orderByChild("uid").
另請注意,使用推送 ID 作為鍵在這里似乎是一種反模式,因為我的猜測是每個 UID 應該只有一個狀態。一個更好的資料模型是:
friends: {
"JrvFaTDGV6TnkZq6uGMNICxwGwo2": {
status: "active"
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/387237.html
