【问题标题】:Firestore Security Rule to allow update nested field允许更新嵌套字段的 Firestore 安全规则
【发布时间】:2018-09-21 18:44:42
【问题描述】:

我有一个结构文件

name: "blablabla"
members:
    123: true
    456: true

用户可以在members添加自己

docRef.update(FieldPath.of("members", myUid), true);

如何编写安全规则来允许这样做?


我试过了

allow update: if is_valid(request.resource.data);
function is_valid(data) {
  return data.keys() == ['members']
      && data.members.keys() == [request.auth.uid]
      && data.members[request.auth.uid] == true;
}

但我得到PERMISSION_DENIED: Missing or insufficient permissions.

(但在安全规则模拟器中允许访问)

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-security


    【解决方案1】:

    我想出了一个使用removedKeys 的条件。从理论上讲,这应该可以正常工作。

    allow update: if is_valid(request.resource.data);
    function is_valid(data) {
      return data.keys() == ['members']
          && data.members.keys() == [request.auth.uid]
          && afterData().members.diff(resource.data.members).removedKeys().size() == 0;
    }  
    function afterData() {
      return getAfter(/databases/$(database)/documents).data;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2021-07-08
      • 2019-06-17
      相关资源
      最近更新 更多