如何解决存在多个路径变量时访问路径文档的数据
我正在构建一个小型聊天应用程序,以增强我的Android / Firebase技能。
但是我遇到了有关文档访问的问题。
我要保护的文件路径如下
chat/{chat_id}/messages/{message_id}
。
为了使用户能够读取或编写新的message
,需要对其进行授权,即request.auth != null
。
而且,我只希望给定聊天的成员用户能够读/写消息。
在{chat_id}
文档中,我有一个List
字段,其中包含当前是该聊天成员的所有用户的uid
。因此,为了使用户能够访问消息,我需要验证其uid是否存在于{chat_id}.data.members
列表中。
当前是否可以通过消息规则访问{chat_id}
文档?
如果我做resource.data
,它会给我一个message
对象,我不需要它,因为它不包含任何重要数据。
任何帮助表示赞赏:)
解决方法
您可以向上访问当前文档/集合的任何可变路径段(在Firestore文档中也称为wildcards
)。
例如,看看accessing other documents的Firebase文档示例,它具有:
allow create: if request.auth != null && exists(/databases/$(database)/documents/users/$(request.auth.uid))
在这里$(database)
是包含在父match语句中声明的数据库的名称。
在您的示例中,您可以从问题中显示的路径访问$(chat_id )
和$(message_id)
,例如,从外部match语句访问$(database)
,然后访问{ {1}}和$request
内置的全局变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。