【发布时间】:2019-04-27 17:31:15
【问题描述】:
【问题讨论】:
标签: firebase google-cloud-firestore
【问题讨论】:
标签: firebase google-cloud-firestore
Firestore 没有跨集合的服务器端连接或投影的概念。每个查询或文档读取只能从单个集合中获取数据,或者从与collection group queries 同名的所有集合中获取数据。如果您需要从两个集合中加载数据,则至少需要两次读取。
因此,在您的情况下,您需要单独加载用户数据,通常将其缓存在代码中的集合中,以防止过于频繁地加载同一用户。
另一种选择是将每个用户经常需要的数据复制到聊天文档中。在 NoSQL 数据库中建模数据时,这种类型的重复也很常见。
有关这些主题的更多信息,我强烈建议您阅读NoSQL data modeling 和观看getting to know Cloud Firestore。
【讨论】:
您可能无法同时查询两个集合,但您仍然可以获取用户详细信息。我在获取 post cmets 时做了同样的事情。您需要做的是拥有一个扩展 Firestore 回收器适配器类的 UsersAdapter 类,并对房间集合执行相同的操作。 Firestore 回收器适配器类监听数据的变化。因此,当您在适配器类的在线方法中接收数据时,您可以在将其余数据加载到回收器视图之前获取其余数据。
我希望这是有道理的
【讨论】:
您必须执行两个单独的读取。但是您会遇到的问题是读取数据在后台执行,您必须等到收到第二个读取数据。
【讨论】: