我正在使用firestore创建一个upvote / downvote系统。我有一些项目都有独特的ID,我想创建一个'投票'密钥是项目ID和密钥的集合:值对是选民及其投票的uid。我的架构是:
votedDocumentId: {
user1Id: user1Vote,
user2Id: user2Vote,
...
}
我想根据用户尝试更新的用户ID密钥限制写入权限,他们应该只能更改自己的投票,而不是其他用户投票:
match /databases/{database}/documents {
match /votes/{votedDocumentId} {
allow read;
allow update: if request.auth.uid == ???
}
答案 0 :(得分:0)
据我所知,目前的规则是不可能的。在我看来,这是一个你应该使用云功能的场景。
否则你可以通过用户ID索引文档,这样可以更容易地设置规则:
match /votes/{userId} {
allow read;
allow update: if request.auth.uid == userId
}
在那里,您可以查询documentId,但根据您平台上用户的活动,您可能会有数据过量。