Firestore过滤器错误:权限丢失或不足

时间:2018-02-18 14:09:13

标签: security ionic3 google-cloud-firestore rules

我正在使用Ionic cordova客户端处理Firestore数据库。这是我的数据结构:

enter image description here

我想根据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() ;
            });
        });

1 个答案:

答案 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() ;
            });
        });