reactjs - 使用 react-redux-firebase 的 Firebase Firestore 查询
问题描述
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规则不是过滤器。
解决方案
您正在单独(并且不必要地)阅读文档,我认为规则引擎无法评估和验证查询永远不会在这种情况下返回不允许的文档。
尝试这个:
allow read: if resource.data.uid == request.auth.uid;
推荐阅读
- c++ - 实施哈里斯角检测
- java - 用子类中的已检查异常覆盖抛出未检查异常的超类方法
- android - 改造协程状态码 205 Body Null
- cassandra - CQLSH:NoHostAvailable 错误 Cassandra 更新失败更新
- python - 从网站抓取 csv 时 .decode('utf-8') 是什么意思?
- python - 我可以将 Flask 应用程序转换为像 .exe 文件一样在 Windows 上运行的可执行文件吗?
- c - C99 中的自动枚举定义
- tinymce - TinyMCE 粘贴问题
- postgresql - 如何在 PostgreSQL 中解密哈希密码
- javascript - 为什么给一个对象分配一个值给另一个对象,然后重新分配原始对象会改变两个对象?