Firestore安全规则允许更新嵌套字段

6

我有一份文档,其中包含结构信息

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

用户可以将自己添加到成员中。

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: 缺少或不足的权限。

(然而,在安全规则模拟器中允许访问)

1个回答

0

我使用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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接