Firebase Firestore 单个文档中特定于密钥的写入权限



我正在使用firestore制作一个赞成/反对系统。我有一些项目都有唯一的 ID,我想创建一个"votes"集合,其中键是项目 ID,键:值对是选民及其投票的 uid。我的架构是:

votedDocumentId: {
user1Id: user1Vote,
user2Id: user2Vote,
...
}

我想根据用户尝试更新的用户 ID 键限制写入权限,他们应该只能更改自己的投票,而不能更改其他用户投票:

match /databases/{database}/documents {
match /votes/{votedDocumentId} {
allow read;
allow update: if request.auth.uid == ???
}

据我所知,这在现行规则下是不可能的。在我看来,这是一个你应该使用云函数的情况。

否则,您可以按用户 ID 索引文档,这将使您更轻松地设置规则:

match /votes/{userId} {
allow read;
allow update: if request.auth.uid == userId
}

在那里,您可以查询 documentId,尽管根据平台上用户的活动,您的数据会矫枉过正。

最新更新