我正在研究我的第一个大型火山基地火灾风暴应用程序。它本质上是一个多租户应用程序,我们有一个集合结构,如:
帐户文档如下所示:
{
"name": "ACME Inc",
"primaryUserID": "2wUMSpffuQgcFDWWI9uHm9RY642",
"users": {
"2wUMSpffuQgcFDWWI9uHm9RY642": {
"admin": true,
"user": true
}
}
}
我希望确保帐户列表仅显示用户有权查看的帐户。我也想保护子集合。到目前为止,我已经制定了以下规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
match /accounts/{account}{
function signedIn() {
return request.auth.uid != null;
}
function SignedInAndBelongsToAccount() {
return signedIn() && getUser() != null;
}
function getRole(roleName){
return getUser()[roleName] == true;
}
function getUser() {
return get(/databases/$(database)/documents/accounts/$(account.uid)).data.users[request.auth.uid];
}
allow read: if getRole('user')
allow write: if getRole('admin');
}
}
}
但我的列表显示所有帐户,我还没有想出子集合。我错过了什么?它不会过滤行,而是需要在应用查询中过滤它吗?或者我应该将其结构完全不同?
答案 0 :(得分:0)