我在根级别上有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
我是在做错事还是在这里发生了什么?
答案 0 :(得分:0)
显然“您无法查询您无权访问的数据”。由于只有private: false
个任务可读,因此应该从中更改查询:
firestore.collection('/tasks').onSnapshot(snapshot => {})
以下:
firestore.collection('/tasks').where('private', '==', false).onSnapshot(snapshot => {})
在仅请求我有权访问的数据后,它开始工作了!