【发布时间】:2020-09-10 21:23:20
【问题描述】:
我不知道如何编写反映以下内容的 Firestore 规则:“当用户从 messages 集合中请求文档时,请检查该“消息”集合上方的文档是否包含一个字段,该字段包含他们的 uid。我已经获得了在顶层工作的规则,但是如果我尝试访问集合中的文档,该集合位于“聊天”集合中,用户将被拒绝。
这是我的相关规则:
match /chats/{chatId}/{allChildren=**} {
allow read, update: if request.auth.uid in resource.data.usersUids;
}
这可行(chatId 文档有一个 uid 数组):
await db.collection("chats").doc(chatId).get()
这不起作用(所有消息都没有 uid 数组):
await db.collection("chats").doc(chatId).collection("messages").get()
问题的核心似乎是我试图获取messages 集合的resource.data,而不是chatId 文档的资源,但我无法解决这个问题.
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security