首页 > 解决方案 > 从 Firestore 的集合中获取多个特定数据的最佳方法是什么?

问题描述

有没有更好的方法从firestore中的集合中获取多个特定数据?假设有这个集合:

--Feeds (collection)
  --feedA (doc)
    --comments (collection)
      --commentA (doc)
        users_in_conversation: [abcdefg, hijklmn, ...] //Field contains list of all user in conversation

然后,我需要从Users集合中检索用户数据(姓名和头像),目前,我对每个用户进行了 1 次查询,但是当有很多人在交谈时会很慢。检索特定用户的最佳方式是什么?

谢谢!

标签: firebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


检索附加名称实际上比大多数开发人员预期的要快得多,因为请求通常可以通过单个 HTTP/2 连接进行管道传输。但是,如果您注意到性能问题,请编辑您的问题以显示您使用的代码、您拥有的数据以及您获得的性能。

减少加载额外文档的常用方法是复制数据。例如,如果您将用户的姓名和头像存储在每个评论文档中,则每次阅读评论时都不需要查找用户个人资料。

如果您来自关系数据库的背景,那么这种数据重复可能非常出乎意料。但它实际上在 NoSQL 数据库中很常见。

然后,您当然必须考虑如何处理用户配置文件的更新,为此我建议您阅读:如何在 Firebase 中写入非规范化数据虽然这是针对 Firebase 的其他数据库,但同样的概念也适用于 Firebase。我通常还建议观看“了解 Cloud Firestore”


推荐阅读