簡體   English   中英

實時 FireBase 查詢快照更改多次觸發以進行批量更新

[英]RealTime FireBase Query snapshotChanges firing multiple times for a batch update

我在谷歌 map 上有標記,每 45 秒從現場設備更新一次。 我注意到在向我的 firebase 中的列表發送批量更新時,每個更新的文檔都會給我一個新的有效負載。 最初我想獲得完整的有效載荷。 在那之后,當一切都更新時,獲得一個負載可能是最佳的。

我的問題是,有沒有一種方法可以使 firebase 查詢異步,即使正在附加偵聽器?

我唯一的解決方案(我覺得效率很低)是放置一個自定義異步計時器,一旦檢測到一個更改,它只會調用 function。 這是一個糟糕的解決方案,因為仍然會發生多次讀取。

   this.eventSubscription = this.db.list('device/' + this.auth.returnClientID()).snapshotChanges().pipe(map(actions => {
      console.log(actions);
      for (const load of actions) {
        const x = load.payload.toJSON();
        x['device_nr'] = load.key;
        fireBaseMarkers.push(x);
      }
    })).subscribe(_ => { ...

因此,如果更新了 45 台設備,則在上面的這個片段中,控制台會記錄 45 次操作。

這是數據庫結構

找到了一個解決方案,經過一個相當大的兔子洞。 我發現一篇文章顯示 firebase 無法限制每個用戶的讀取量。 現在每次更新文檔時,它都會抓取樹下每個文檔的數據。

因此,我現在只聽一個全局時間戳,而不是聽整個數據庫,每次它發生變化時,我都會查詢新數據。

似乎是一個更有效的解決方案,我對任何其他解決方案持開放態度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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