我有兩個聽眾——一個是用戶的profile,一個是rooms用戶所在的;的 uidrooms存盤在 上的陣列中profile,即第二個偵聽器的查詢取決于第一個偵聽器的資料。
它看起來像這樣(簡化):
// profile listener
onSnapshot(profileRef, (snapshot) => setProfile(snapshot.doc.data())
// rooms listener
const roomsQuery = query(
collection(db, "rooms")
where("uid", "in", profile.roomsList)
)
onSnapshot(roomsQuery, (snapshot) => setRooms(snapshot.docs)
當用戶被添加到一個新room的,profile更新與新的roomsList。但是rooms快照沒有更新——大概是因為查詢不能動態更新。
問題
那么,有沒有辦法更新偵聽器的查詢(即保持相同的偵聽器),還是每次profile更新時我都必須取消訂閱現有偵聽器并重新訂閱新查詢?
版本
使用 Javascript sdk 的新 V9
uj5u.com熱心網友回復:
Firestore 查詢是不可變的,因此一旦創建查詢,就無法更改條件。您確實必須將偵聽器附加到新查詢以獲取更新roomsList。但是,如果您啟用離線持久性,查詢之間的重疊檔案將從本地快取中讀取。
另請參閱:如何在 Android 中使用 LiveData 和 ViewModel 不斷更新 Firebase 實時資料庫的查詢
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496534.html
