我有一堆文件,每个文件都包含几个字段。如何编写仅适用于每个文档中特定字段的规则?
例如,如果我的文档如下:
{
"displayName": "John Doe", // read and write
"accessLevel": 3 // read only
}
我如何做到这一点
我浏览了许多视频和Firestore文档,但没有发现任何东西可以显示出如何使用此按字段控制。
答案 0 :(得分:1)
您要查找的是使字段不可修改。为此,请检查规则,确保请求后的字段值与之前的值相同。
在我的规则中,我有一个简单的辅助函数:
function isUnmodified(key) {
return request.resource.data[key] == resource.data[key]
}
然后我从write
(或create
和update
)规则中调用此函数:
allow update: if isAdmin() || isUnmodified('name');
因此,在上面的示例中,任何管理员(由我的isAdmin
函数确定)都可以修改名称字段,而其他用户则不能。