如何根据文档 ID 数组获取文档列表?
Posted
技术标签:
【中文标题】如何根据文档 ID 数组获取文档列表?【英文标题】:How to get a list of documents based on an array of document ids? 【发布时间】:2018-02-17 19:49:22 【问题描述】:根据另一个文档 ID 列表获取文档列表的最佳方法是什么?
如果我有 User
和 Profile
对象。
用户只有一个个人资料 用户可以保存其他用户的个人资料 同一个人资料不能保存两次
savedProfile 子集合的文档是根据其所属用户的 uid 存储的。它还有一个属性userRef
,它再次存储了用户的uid。鉴于 savedProfiles 是一个 uid 列表。有没有办法根据 savedProfiles 子集合获取配置文件列表?目前,我能够为用户保存的配置文件发出获取请求,该配置文件返回我存储在变量中的 uid 列表。我只是想知道如何根据该列表发出下一个请求以获取 savedProfiles 的完整配置文件?将整个用户配置文件保存在 users savedProfiles 中也不是一种选择,因为这些配置文件可以非常频繁地更新和更改,如果该配置文件已保存,则查找和更改每个用户保存的配置文件会很昂贵。 (如果有 100,000 个用户,每个用户平均保存了大约 10 个配置文件)。
请告诉我是否有办法进行此类查询,或者是否有更好的方法来构建我的数据。谢谢。
【问题讨论】:
没有特定的 API 可以通过 ID 获取文档列表。在此处查看 Sam 的答案:***.com/a/46773341 Google Firestore - how to get document by multiple ids in one round trip?的可能重复 【参考方案1】:好的,所以我想我设法找到了方法。在我的云功能中,我使用了admin.firestore().getAll(refList)
。 refList 是我想要的文档引用数组。这将返回一个promise,它提供与这些引用匹配的文档列表。每个文档的数据都可以通过doc.data()
正常访问我要么解决了这个问题,要么我做错了什么。随时发表评论,让我知道我在做什么。谢谢
【讨论】:
是的,这将是一种解决方案,唯一糟糕的是它必须从云功能完成,而不是从客户端.. ughhhh以上是关于如何根据文档 ID 数组获取文档列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在firestore中获取文档,其文档ID存储在列表中?,即只带那些文档....?