firebase - 每个文档颤动的 Firebase-firestore 安全规则
问题描述
Firebase-Firestore 拒绝所有请求,而不是拒绝不符合数据 Firebase-Firestore 安全规则的特定文档
allow read: if authenticated() && resource.data.status == true || author(resource.data.creatorid) || admin();
我想要实现的只是状态=真实的文件会出现
错误
Unhandled Exception: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.
使用包 paginate_firestore 颤动
PaginateFirestore(
itemsPerPage: 5,
key: key,
shrinkWrap: true,
physics: ClampingScrollPhysics(),
itemBuilderType: PaginateBuilderType.listView,
itemBuilder: (index, context, documentSnapshot) {
final data = documentSnapshot.data() as Map?;
return MainComponent(
data: data,
);
},
query:
FirebaseFirestore.instance.collection('members').orderBy('title'),
isLive: false,
);
从 Firestore 中检索到的零文档。屏幕只是显示加载
解决方案
我认为状态未设置为 true 的文档会引发错误。尝试在查询中添加 where 子句,以获取状态为 true 的文档。
query:
FirebaseFirestore.instance.collection('members').where("status", isEqualTo: true).orderBy('title')
在向作者展示他们自己的请求时,您可以添加一个 where 检查作者 ID 是否等于当前登录用户的 ID。
query:
FirebaseFirestore.instance.collection('members').where("authorId", isEqualTo: "currentUserId").orderBy('title')
还可以尝试用逻辑或括号括起来条件:
allow read: if authenticated() && (resource.data.status == true || author(resource.data.creatorid) || admin());
推荐阅读
- jenkins - 在 Jenkins 中安装 npm peerDependencies
- mysql - MySQL bulk INSERT .. ON DUPLICATE KEY UPDATE 同时指定个别列
- awk - grep file1 到 file2 不改变顺序
- bash - 在 GNU Bash 4.2.46(2) 中捕获列的单个单元格
- javascript - 我应该如何设计卡片的样式,以便每行可以有 3 张卡片?
- python - 直方图将两个数据集相互参考
- sql - 外部联接不起作用,查询中只需要 Null 列
- ruby - Ruby:将相同的参数传递给类中的多个方法
- java - 如何使用 Java 使用 Servlet 2.3 将 cookie 设置为 HttpOnly
- python - 在异常中包装“with”语句的最佳方法是什么?