Firestore安全规则中的每个字段规则

时间:2019-10-17 01:23:25

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

我有一堆文件,每个文件都包含几个字段。如何编写仅适用于每个文档中特定字段的规则?

例如,如果我的文档如下:

{
  "displayName": "John Doe", // read and write
  "accessLevel": 3 // read only
}

我如何做到这一点

  • 读取显示名称和访问级别
  • 写入显示名称
  • 不写入访问权限级别

我浏览了许多视频和Firestore文档,但没有发现任何东西可以显示出如何使用此按字段控制。

1 个答案:

答案 0 :(得分:1)

您要查找的是使字段不可修改。为此,请检查规则,确保请求后的字段值与之前的值相同。

在我的规则中,我有一个简单的辅助函数:

function isUnmodified(key) {
  return request.resource.data[key] == resource.data[key]
}

然后我从write(或createupdate)规则中调用此函数:

  allow update: if isAdmin() || isUnmodified('name');

因此,在上面的示例中,任何管理员(由我的isAdmin函数确定)都可以修改名称字段,而其他用户则不能。