Firebase Firestore安全规则中的按字段规则

Firebase Firestore安全规则中的按字段规则,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我有一堆文档,每个文档包含几个字段。如何编写只适用于每个文档中特定字段的规则 例如,如果我的文档如下所示: { "displayName": "John Doe", // read and write "accessLevel": 3 // read only } 我怎样才能做到你能做到 读取显示名称和访问级别 写入显示名称 不写入访问级别 我浏览了很多视频和Firestore文档,但没有找到任何显示如何使用每个字段控制的内容。您想要的是使字段不可修改。您可以通过在规则中检查字段的

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

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

{
  "displayName": "John Doe", // read and write
  "accessLevel": 3 // read only
}
我怎样才能做到你能做到

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

我浏览了很多视频和Firestore文档,但没有找到任何显示如何使用每个字段控制的内容。

您想要的是使字段不可修改。您可以通过在规则中检查字段的值在请求后与请求前相同来实现这一点

我的规则中有一个简单的帮助函数:

function isUnmodified(key) {
  return request.resource.data[key] == resource.data[key]
}
然后,我从我的
write
(或
create
update
)规则中调用此函数:


因此,在我上面的示例中,任何管理员(由我的
isAdmin
函数决定)都可以修改名称字段,但其他用户不能。这是一种检查更改的聪明方法,我没有考虑到这一点。非常感谢你的帮助!
  allow update: if isAdmin() || isUnmodified('name');