3
service cloud.firestore {
  match /databases/{database}/documents {
    match/projects/{project} {
      allow read: if 
       get(/databases/$(database)/documents/projects/$(project)).data.uid == 
       request.auth.uid;
      allow create: if request.auth.uid == request.resource.data.uid;
      allow update, delete: if request.auth.uid == resource.data.uid;
    }
  }
}

我在这里做查询:

firestoreConnect((props) => { 
  return ([{ collection: 'projects', where: [["uid", "==", props.auth.uid]] }]) 
})

但我收到一个错误:

配置文件侦听器出错:缺少权限或权限不足。错误:权限缺失或不足。在新的 FirestoreError (index.cjs.js:402)。

当我检查使用模拟器在路径中输入文档 ID 时,我获得了读取权限。我没有得到我错的地方。也许在查询中。

当我将规则更改为:

allow read : if resource.data.uid == request.auth.uid;

没有错误,并显示数据。

为什么它发生是错误还是我做错了什么?我知道firebase规则不是过滤器。

4

1 回答 1

1

您正在单独(并且不必要地)阅读文档,我认为规则引擎无法评估和验证查询永远不会在这种情况下返回不允许的文档。

尝试这个:

allow read: if resource.data.uid == request.auth.uid;
于 2018-11-18T04:50:40.267 回答