【问题标题】:Query data in multiple collections查询多个集合中的数据
【发布时间】:2019-04-27 17:31:15
【问题描述】:

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

这是我的数据库结构:

请帮忙

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      您可能无法同时查询两个集合,但您仍然可以获取用户详细信息。我在获取 post cmets 时做了同样的事情。您需要做的是拥有一个扩展 Firestore 回收器适配器类的 UsersAdapter 类,并对房间集合执行相同的操作。 Firestore 回收器适配器类监听数据的变化。因此,当您在适配器类的在线方法中接收数据时,您可以在将其余数据加载到回收器视图之前获取其余数据。

      我希望这是有道理的

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-17
          • 2016-06-18
          • 1970-01-01
          • 2014-08-09
          • 2019-05-09
          • 2019-12-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多