我有一个集合Users,它有与user.uid相同Id的文档。我想允许登录的用户创建文档,并且只更新、删除和读取他们的文档,这些文档是用前面提到的相同uid指定的。
我试过了,但一直失败。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{document} {
allow create, : if request.auth != null;
allow update, delete, read: if request.auth != null && request.auth.uid == request.resource.data.UID;
}
}
}
在这段代码中,我试图将登录用户的uid与一个名为UID的文档字段进行比较
看看文档,它准确地显示了对您问题的回答。
service cloud.firestore {
match /databases/{database}/documents {
// Make sure the uid of the requesting user matches name of the user
// document. The wildcard expression {userId} makes the userId variable
// available in rules.
match /users/{userId} {
allow read, update, delete: if request.auth != null && request.auth.uid == userId;
allow create: if request.auth != null;
}
}
}
关键是使用{userId}
通配符表达式将正在读取/更新/删除的文档的ID与用户的uid
(即request.auth.uid
(相匹配;