Google cloud firestore 访问路径文档';当存在多个路径变量时,将删除数据
我正在开发一个小型聊天应用程序来提高我的Android/Firebase技能。 但是我遇到了一个关于文档访问的问题。 我希望保护的文档路径如下Google cloud firestore 访问路径文档';当存在多个路径变量时,将删除数据,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,我正在开发一个小型聊天应用程序来提高我的Android/Firebase技能。 但是我遇到了一个关于文档访问的问题。 我希望保护的文档路径如下 chat/{chat\u id}/messages/{message\u id} 为了让用户阅读或编写新的消息,他们需要获得授权,这意味着request.auth!=空。 而且,我只希望作为给定聊天室成员的用户能够读/写消息 在{chat\u id}文档中,我有一个列表字段,其中包含当前是该聊天室成员的所有用户的uid。因此,为了让用户访问消息,我需要验
chat/{chat\u id}/messages/{message\u id}
为了让用户阅读或编写新的消息
,他们需要获得授权,这意味着request.auth!=空
。
而且,我只希望作为给定聊天室成员的用户能够读/写消息
在{chat\u id}
文档中,我有一个列表
字段,其中包含当前是该聊天室成员的所有用户的uid
。因此,为了让用户访问消息,我需要验证他们的uid是否存在于{chat\u id}.data.members
列表中。
当前是否有方法从消息规则访问{chat\u id}
文档如果我使用
resource.data
,它会给我一个消息
对象,我不需要它,因为它不包含任何重要数据非常感谢您的帮助:)您可以访问当前文档/集合的任何可变路径段(在Firestore文档中也称为
通配符)
例如,请查看的Firebase文档示例,其中包括:
allow create: if request.auth != null && exists(/databases/$(database)/documents/users/$(request.auth.uid))
在这里,$(数据库)
是包含数据库的名称,在父匹配语句中声明
在您的示例中,您可以从问题中显示的路径访问$(chat\u id)
和$(message\u id)
,例如从外部匹配语句访问$(database)
,以及$request
和$resource
内置全局变量。回答下面的具体问题。如果这不允许您解决问题,请编辑您的问题以显示。因此,如果我尝试检查路径聊天室/{chatroom\u id}/members/{member\u id}
上的members
集合下是否存在key=request.auth.uid
的文档,我会执行以下操作:存在(/databases/$(database)/documents/chatRooms/$(resource.data.chatRoomID)/members/$(request.auth.uid))
?是的,乍一看是正确的。如果您在使其工作时遇到困难,请提供我在您的问题中的评论中所要求的。到目前为止,这是增加您获得我们帮助的机会的最佳方式如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就知道你得到了(足够的)帮助。还有,我知道,今天有点匆忙,所以我忘了:)