【问题标题】:Firebase realtime database triggers too many update eventsFirebase 实时数据库触发太多更新事件
【发布时间】:2021-09-27 17:31:00
【问题描述】:
我正在使用 NodeJS,并使用以下代码监听对象的更新:
let ref = mainRef.child("objectKey");
ref.on("value", (snapshot) => {
console.log("update");
console.log(snapshot.val());
});
然后我注意到,有时,单个更改会导致 14 或 15 次触发此事件,从而带来对象的最新状态,以及之前的一些状态。
上面的代码只运行一次,所以“value”事件没有多次注册。
有什么问题?
谢谢
【问题讨论】:
标签:
javascript
node.js
firebase
firebase-realtime-database
google-cloud-platform
【解决方案1】:
当我只更新 1 个项目的 1 个属性时,我认为我从 Firebase 收到 40 多条消息时遇到了同样的问题。
原来不是 ref.on("value", ...) 监听器出了什么问题,而是触发 Firebase 实际更新的代码,触发了相同 AJAX 更新调用的一点 Javascript 被触发了很多次而不是一次。
所以这是要检查的第一件事,可能会添加一些日志记录以确保在 Firebase 上更新值的代码只运行一次。
【解决方案2】:
在我的情况下,对于 一个 变化,我总是得到恰好 两个 事件。我用过
firebase.database.ServerValue.TIMESTAMP
从我的文档中删除服务器时间戳后,值事件每次更新只会触发一次。