查询多个集合中的数据

时间:2018-11-26 04:41:29

标签: firebase google-cloud-firestore

我正在使用Firebase Firestore开发聊天应用程序。 我有一个用于聊天室的集合,另一个用于用户信息集合。 收听会议室快照时如何检索用户数据。

这是我的数据库结构:

enter image description here

enter image description here

请帮助

3 个答案:

答案 0 :(得分:2)

Firestore不具有跨集合的服务器端连接或投影的概念。每次查询或读取的文档只能从单个集合中获取数据。如果您需要从两个集合中加载数据,则至少需要读取两次。

因此,在您的情况下,您需要分别加载用户数据,通常将其缓存在代码的集合中,以防止过于频繁地加载同一用户。

另一种替代方法是将每个用户经常需要的数据复制到聊天文档中。在NoSQL数据库中对数据进行建模时,这种重复类型也很常见。

有关这些主题的更多信息,我强烈建议您阅读NoSQL data modeling并观看getting to know Cloud Firestore

答案 1 :(得分:1)

您必须执行两个单独的读取。但是您将遇到的问题是读取数据在后台执行,您必须等待直到收到第二个读取数据。

答案 2 :(得分:0)

您可能无法同时查询两个集合,但仍可以获取用户详细信息。在获取帖子评论时,我做了同样的事情。您需要做的是有一个UsersAdapter类,该类扩展了Firestore Recycler适配器类,并且对rooms集合也是如此。 Firestore回收器适配器类侦听数据更改。因此,当您在适配器类的在线方法中接收到数据时,您可以在将其余数据加载到回收器视图之前获得那里的其余数据。

我希望这是有道理的