【问题标题】:How can i get sub-collections of sub-collections in Firebase in one call如何在一次调用中获取 Firebase 中子集合的子集合
【发布时间】:2020-06-02 21:59:29
【问题描述】:

我有一个如下所示的 firebase 架构: 帖子 > 帖子(文档)> cmets > cmets(集合)> 回复 > 回复(文档)

const allComments = await firebase
  .collection('posts')
  .doc(params.slug as string)
  .collection('comments')
  .orderBy("date", "desc")
  .get()

如果我试图得到这样的回复:

const allComments = await firebase
  .collection('posts')
  .doc(params.slug as string)
  .collection('comments')
  .doc("some_random_id")
  .collection('reply')
  .get()

我只会得到答复,这不是所需的输出。 我需要在一个电话中获得每条评论的每条回复。 所以返回的对象是每条评论,每条评论都包含一个回复对象。

【问题讨论】:

  • 你现在拥有的有什么问题?您能否使用实际数据编辑问题以显示您需要的具体示例?
  • 上面的代码只获取了 cmets 子集合,但我也需要回复集合。
  • 我添加了更多信息

标签: javascript firebase google-cloud-firestore


【解决方案1】:

Firestore 查询是“浅层”的,仅返回正在查询的集合中的文档。他们不考虑子集合中的任何文档。要从子集合中获取文档,您需要对每个子集合进行另一个查询。

最好将所有 cmets 和回复简单地放在一个集合中,用一个布尔值标记它们,指示它是否是回复,并在查询需要时将其用作过滤器。集合的大小不会对性能产生任何影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2022-11-16
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2021-06-01
    相关资源
    最近更新 更多