我正在使用Ionic cordova客户端处理Firestore数据库。这是我的数据结构:
我想根据ownerId字段过滤我的设计集合。
我尝试了几条规则,但都给了我
错误:权限丢失或不足。
这是我目前的规则
service cloud.firestore {
match /databases/{database}/documents {
match /designs/{design} {
allow read: if resource.data.ownerId == request.auth.uid ;
allow write: if false;
}
}
}
这是我的客户代码
AngularFirestore.collection(`designs`).snapshotChanges().map(x => {
return x.map(y => {
return y.payload.doc.data() ;
});
});
答案 0 :(得分:1)
这里的问题是规则不能用作过滤器。
如果您尝试阅读单个文档,ownerId == request.auth.id
,那么它将起作用。
如果要列出此用户可读的所有文档,则需要根据当前用户ID进行过滤(此处显示为userId):
AngularFirestore.collection(`designs`).where('ownerId', '==', userId).snapshotChanges().map(x => {
return x.map(y => {
return y.payload.doc.data() ;
});
});