每个文档颤动的 Firebase-firestore 安全规则
Posted
技术标签:
【中文标题】每个文档颤动的 Firebase-firestore 安全规则【英文标题】:Firebase-firestore security rules per document flutter 【发布时间】:2021-10-25 21:55:37 【问题描述】:Firebase-Firestore 拒绝所有请求,而不是拒绝不符合数据的特定文档 Firebase-Firestore 安全规则
allow read: if authenticated() && resource.data.status == true || author(resource.data.creatorid) || admin();
我想要实现的只是 status = true 文档会出现
错误
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 中检索到零个文档。屏幕只是显示加载
【问题讨论】:
【参考方案1】:我认为状态未设置为 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());
【讨论】:
你能看看这个***.com/questions/68945869/…以上是关于每个文档颤动的 Firebase-firestore 安全规则的主要内容,如果未能解决你的问题,请参考以下文章
使用 StreamBuilder 获取 Firestore 文档,其中包含颤动中的地图列表