首页 文章

Firestore规则为什么这不起作用?

提问于
浏览
0

我在根级别有 tasks 集合,这是我的规则(是的,现在超级全局):

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if resource.data.private == false;
      allow write: if request.auth.uid != null;
    }
  }
}

单个任务有字段 private: Boolean ,我想为所有具有 private: false 的任务授予读取权限,并且只允许登录用户写入 .

firestore.collection('/tasks').onSnapshot(snapshot => {})

至少使用onSnapshot,此读取规则不起作用 . 我给出了一个错误:

Uncaught Error in onSnapshot: Error: Missing or insufficient permissions

我做错了什么或这里发生了什么?

1 回答

  • 0

    显然"you can't query data you have no access to" . 因为只有 private: false 任务是可读的,所以应该从中更改查询:

    firestore.collection('/tasks').onSnapshot(snapshot => {})
    

    以下:

    firestore.collection('/tasks').where('private', '==', false).onSnapshot(snapshot => {})
    

    在仅请求我有权访问的数据后,它开始工作了!

相关问题