在将数据更新到 RDB 并拒绝权限时,我发现了一个奇怪的行为。
重现“错误”所需的最少代码示例:
getBooks() {
firebase.database().ref("books/1").on("value", data => {
console.log("foo", data.val());
}
}
setAuthor() {
firebase.database().ref("books/1").update({ "author": "foo" });
}
假设我们订阅了 getBooks 以获取每次更改的数据。
setAuthor
现在让我们使用方法更新作者。
如果我们获得所需的许可会发生什么?
→ 一切正常。日志“foo”将与 author =“foo”的新节点一起弹出。
如果我们没有所需的许可会发生什么?
→ 按以下顺序记录 3 个日志:
- "foo" 将与 author = "foo" 的新节点一起弹出。
- @firebase/database:FIREBASE 警告:在 /books/1 更新失败:permission_denied
- “foo”将使用旧节点(与原作者)一起弹出。
注意:这种奇怪的行为只发生在尝试更新的客户端上author
(幸运的是)。更新不起作用。确认我打开了另一个浏览器并且没有弹出日志。
任何解释为什么它的行为就像有更新?