我正在关注有关firestore的教程,但我不太了解firestore规则。我试图让任何人都能够在标准中创建 用户/ UID / 路径,但只有在请求者尝试更新时才允许更新 用户/ theirUserId / 我在文档中看到了这一点,但它似乎对我不起作用:
allow write: if request.auth.uid == resource.data.author_id;
任何人都可以解释上述行的功能和/或提供有关如何实现此目的的建议吗?
此外,有没有办法为文档中的特定数据指定规则?
答案 0 :(得分:1)
您的文档似乎不包含author_id
字段。
Firebase文档Writing Conditions for Security Rules使用此示例:
service cloud.firestore {
match /databases/{database}/documents {
// Make sure the uid of the requesting user matches the 'author_id' field
// of the document
match /users/{user} {
allow read, write: if request.auth.uid == resource.data.author_id;
}
}
}
这意味着,如果他们的身份验证ID等于{{1},那么随机用户将只能read
个 中的write
和users
特定文件的字段。
资源变量引用所请求的文档,
author_id
是存储在文档中的所有字段和值的映射。有关资源变量的更多信息,请参阅reference documentation。
关于第二个问题,我建议您查看有关resource.data
变量的文档(上面引用的链接)。它与您的resource
问题的逻辑相同。
答案 1 :(得分:0)
对于特定情况,您可以将allow write
分为三个create
,update
,delete
。
在你的情况下
allow create: if request.auth.uid != null;
allow update: if request.auth.uid == resource.data.author_id;
表示任何经过身份验证的用户都可以创建并仅更新其文档。并且创建的用户必须有一个字段author_id
,这是他们的用户ID。