Javascript firebase 8.4反复运行.once()

Javascript firebase 8.4反复运行.once(),javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我的应用程序运行良好firebase@8.3.3. 在8.4.0/1/2/3上,.once()代码被无限期重复执行 我的代码: public buStateClick(key: string, action: state) { this._afDB.database.ref(`${path}/${key}/state`).once('value', (snap) => { this._afDB.database.ref(`${path}/${key}/state`).o

我的应用程序运行良好firebase@8.3.3. 在8.4.0/1/2/3上,.once()代码被无限期重复执行

我的代码:

public buStateClick(key: string, action: state) {
    this._afDB.database.ref(`${path}/${key}/state`).once('value', (snap) => {
      this._afDB.database.ref(`${path}/${key}/state`).off(); // required after 8.4.0
      if (snap.exists()) {
        this._afDB.database.ref(`${path}/${key}`).update({state: newState});
      }
    });
}
在没有.off()的原始程序中,当代码运行时,.once()和.update()被执行了超过700次,直到堆栈失败。添加.off()会将其恢复为原始行为

我相信.once()应该是.off()本身,并且不应该运行超过一次。代码没有理由需要.off()才能工作

参考:我原来的问题

@NickArmitage也有类似的问题,但他的代码只适用于8.3.2版本。

firebaser

这确实是SDK的8.4版本的回归。感谢清晰的MCVE,我能够用我链接的JSBin复制它


该bug也记录在SDK的Github repo上,目前正在进行修复。请密切关注以获取任何更新。

SDK 8.4.0版中似乎存在一个bug,导致8.4.1版的后续版本非常快,因此您可能希望升级以查看是否解决了问题:@FrankvanPuffelen正如我指出的,问题仍然存在于841 842和843中。我可以在此处重现此问题:。乍一看,这看起来确实是一种倒退,所以我正在与团队一起检查可能发生了什么