firebase - 从 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 次查询,但是当有很多人在交谈时会很慢。检索特定用户的最佳方式是什么?
谢谢!
解决方案
检索附加名称实际上比大多数开发人员预期的要快得多,因为请求通常可以通过单个 HTTP/2 连接进行管道传输。但是,如果您注意到性能问题,请编辑您的问题以显示您使用的代码、您拥有的数据以及您获得的性能。
减少加载额外文档的常用方法是复制数据。例如,如果您将用户的姓名和头像存储在每个评论文档中,则每次阅读评论时都不需要查找用户个人资料。
如果您来自关系数据库的背景,那么这种数据重复可能非常出乎意料。但它实际上在 NoSQL 数据库中很常见。
然后,您当然必须考虑如何处理用户配置文件的更新,为此我建议您阅读:如何在 Firebase 中写入非规范化数据虽然这是针对 Firebase 的其他数据库,但同样的概念也适用于 Firebase。我通常还建议观看“了解 Cloud Firestore”。
推荐阅读
- user-interface - 在哪里可以找到新的 Microsoft 的 mso 图标
- plsql - 将 clob 数据插入不同的表列
- mysql - 合并MySQL中具有相同项目编号但不同日期的行
- html - CSS - 在缩放对话框时将顶部属性值限制为 0
- r - 如何在 SQL Server 中反序列化 R 模型以进行预测?
- r - 具有空间数据的 3D 交互式曲面图
- r - 操作数据框列子集的值
- matlab - 在matlab中调整大小并保存透明PNG文件
- java - 使用 java、maven、spring 和 mySQL 在 AWS 上托管 Web 应用程序
- spring - Spring boot:在拦截器中添加请求参数