[英]Firebase Firestore Unsubscribe to SnapShot in for loop
我正在使用 firebase firestore,並且我有一組來自集合的數據,這些數據是我在 for 循環中拍攝的快照。
為了避免多次查詢數據庫,我創建了數據服務機制來使用本地數組進行顯示,並且我正在通過 rxjs 主題行為來處理它。
這里的問題是,如果用戶從應用程序中刪除了一些文檔,我已經從 firebase 中刪除了它,然后從本地仍然是它的快照,我們必須手動取消訂閱
我知道這樣的基本方法..
var unsubscribe = db.collection("cities")
.onSnapshot(function () {});
// ...
// Stop listening to changes
unsubscribe();
這不適用於我的情況,因為我正在像這樣在 for 循環中拍攝快照
getSnapShot() {
this.global.currentUser.shortlist.forEach((propertyID: any) => {
this.getSnapShotByID(ID);
});
}
getSnapShotByID(ID) {
// return new Observable((observe: Observer<any>) => {
this.db.collection('properties').doc(propertyID).onSnapshot((snapshot: any) => {
//HERE I AM ADDING PROPERTY IN LOCAL ARRAY
....
}
現在,當用戶從集合中刪除屬性時,我必須取消訂閱,否則它將繼續偵聽和更改我的本地數組
有什么建議嗎?
對於您的用例,我可以推薦以下方法
因為您正在獲取 RXJS 主題中的整個數據副本。 在 for 循環中發生刪除的地方,刪除現有 Rxjs 行為主題中不需要的數據,並在刪除后使用 next 運算符再次重新推送新數據。 因此,您的 observable 也會使用最新數據以及 firebase 數據庫進行更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.