【发布时间】:2019-09-14 22:15:54
【问题描述】:
我发现在权限被拒绝的情况下将数据更新到 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 的客户端上(幸运的是)。更新不起作用。确认我打开了另一个浏览器并且没有弹出日志。
任何解释为什么它表现得好像有更新?
【问题讨论】:
标签: javascript firebase firebase-realtime-database firebase-security