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