【发布时间】:2020-09-01 05:50:21
【问题描述】:
我正在尝试列出其 ID 以数组形式给出的所有文档。
规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth.uid != null;
}
function checkUserId(orgId) {
return ('user_id' in resource.data.keys() && request.auth.uid==resource.data.user_id)
|| orgId in get(/databases/$(database)/documents/user/$(request.auth.uid)).data.organisationIds;
}
function checkAdminToken() {
return 'lectusAdmin' in request.auth.token.keys() && request.auth.token.lectusAdmin
}
match /organisation/{document=**} {
allow read, update, delete: if isSignedIn() && (checkUserId(document) || checkAdminToken()); // This is line 20
allow create: if isSignedIn();
}
}
}
我的 Angular 10 代码是:
this.organisationCollection = this._angularFirestore.collection<Organisation>('organisation');
this.organisations = this.organisationCollection.valueChanges({idField: 'id'});
我尝试在集合中添加一个where - .where('id', 'in', org.organisationIds),其中id 是检查org.organisationIds 数组的文档ID(我认为是这样)。同样,我不确定我是否需要这个,因为规则应该能够解决这个问题。
我收到一个错误 - false for 'list' @ L20 那是 - allow read, update, delete: if isSignedIn() && (checkUserId(document) || checkAdminToken());
当我尝试使用 orginisation/<document ID> 获取文档但我无法列出它们时,这可以正常工作。
任何帮助将不胜感激。
【问题讨论】:
标签: angular google-cloud-firestore firebase-security angularfire2