我如何设置Firestore规则,以便以下列方式仅限某些用户访问某些集合文档/集合:
SSH_PID
事情是,我想只允许读取和写入“client-1-store”文档及其文档和子集合,如果当前登录用户的id设置在每个用户允许的数组内“商店“,但我不知道我怎么能这样做......
答案 0 :(得分:1)
//base collection
clients:{
//document
client-1-store:{
users-allowed:{
"user-1-id": true,
"user-2-id": true,
"user-3-id": true,
"user-4-id": true,
}
}
}
match /clients/{storeId=**} {
allow read: if get(/databases/$(database)/documents/clients/$(storeId).data.users-allowed.$(request.auth.uid)) == true;
}
但是,这并不具有allowedUsers子集合,每个用户ID都保存为文档。然后,您可以使用exists
条件。这还允许您为用户的文档添加更多粒度以获取详细的CRUD权限。