【发布时间】:2021-10-20 19:42:45
【问题描述】:
下面是我的firestore数据库
消息子集合如下所示:
以下是我的安全规则。
match /channels/{channelID=**} {
allow read: if request.auth.uid in resource.data.participants;
allow write: if request.auth.uid in resource.data.participants;
但是,当我尝试使用下面的代码收听消息集合中的消息文档时
firestore.collection('channels').doc(channelId).collection('messages').snapshots()
我收到以下错误:
flutter: [cloud_firestore/permission-denied] 调用者没有 执行指定操作的权限。
8.3.0 - [Firebase/Firestore][I-FST000001] 在通道/RILvs2HvV8OiYrsk0W0ZxhxaU8H3-EpPAVCmuYnTWGxvASNk5rgUHTe63/messages 处侦听查询 失败:权限缺失或不足。
我已允许访问安全规则中带有 =** 的所有子集合和文档,但我不确定为什么权限仍然被拒绝?任何意见,将不胜感激。谢谢!
【问题讨论】:
-
您正在尝试访问频道 ID:
"RILvs2HvV8OiYrsk0W0ZxhxaU8H3-EpPAVCmuYnTWGxvASNk5rgUHTe63",如错误所示。在您的屏幕截图中,ID 以Gmf..开头,您可以在查询前print(channelId)并检查其是否有效? -
嗨@Dharmaraj,是的,我将其截图作为示例。但我重新上传了屏幕截图以使其更清晰。
-
嗨@Dharmaraj,为了更清晰,我添加了上面消息子集合和文档的屏幕截图
-
@scottlee 将
sub collection名称添加到您的路径中。match /channels/{channelID=**}/messages/{messageId=**}
标签: firebase flutter google-cloud-firestore firebase-security