Firebase 实时数据库规则:级联效果

问题描述 投票:0回答:1

假设我有一个包含以下内容的实时数据库:

{
  "a1": {
    "b1": {
      "keyb11": "value11"
    },
    "b2": {
      "keyb21": "value21"
    }
  }
}

然后我向 Firebase 发送了一个完整的 JSON 对象作为更新,其中只有 1 个新值(第 4 行):

{
  "a1": {
    "b1": {
      "keyb11": "newvalue"
    },
    "b2": {
      "keyb21": "value21"
    }
  }
}

用户仅具有

b1
级别的写入权限。

此更新是否应该通过 FB 规则,因为虽然在 a1 级别我们没有写入权限,但我们并没有尝试更改 a1 或 b2 集合中的任何内容?或者 FB 规则会阻止此操作,因为我们将其作为完整 JSON 对象的更新发送,包括我们没有写入权限的集合?

firebase-realtime-database firebase-security
1个回答
0
投票

这种情况下,写入会失败。如果任何规则拒绝正在写入的任何值,则写入将完全失败。这可以防止从进行写入的客户端的角度来看不一致的结果。写作是“全有或全无”,否则会给应用程序带来深深的困惑。

如果您需要执行两次可能因某种原因而独立失败的写入,则应单独执行它们并检查结果。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.