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

单个文档中的Firebase Firestore密钥特定写入权限,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我正在使用firestore制作一个向上/向下投票系统。我有所有具有唯一id的项目,我想创建一个“投票”集合,其中键是项目id,键:值对是投票人及其投票的uid。我的模式是: votedDocumentId: { user1Id: user1Vote, user2Id: user2Vote, ... } 我想根据用户试图更新的用户Id密钥限制写入权限,他们只能更改自己的投票,不能更改其他用户的投票: match /databases/{database}/documents

我正在使用firestore制作一个向上/向下投票系统。我有所有具有唯一id的项目,我想创建一个“投票”集合,其中键是项目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,但根据平台上用户的活动,您可能会有数据过量