如何设置firebase安全规则以只允许更新文档中的某些字段?

时间:2021-05-06 00:47:35

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

我想知道如何实现我的用户 具有以下字段:uid、朋友、通知、姓名、用户名。 目前,我的用户文件夹的安全规则如下所示

function signedIn() {
  return request.auth.uid != null;
}

match /users/{user} {
  allow read, update, write: if signedIn();
}

那么我该如何制定更新规则:“条件”, 这样只有朋友和通知是可更新的, 但不是用户名、用户名或名称。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您正在寻找map diffs

例如:

request.resource.data.diff(resource.data).affectedKeys()
       .difference("username", "uid", "name"].toSet()).size() === 0;

或更短:

!request.resource.data.diff(resource.data).affectedKeys()
        .hasAny("username", "uid", "name"];

另见: