簡體   English   中英

Firebase Firestore 在 for 循環中取消訂閱快照

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM