我有一个像这样的firebase模式: 帖子>帖子(文档)>评论>评论(集合)>回复>回复(文档)
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()
我只会得到答复,而不是所需的输出。 我需要在一个电话中获得每个评论的每个回复。 因此返回的对象将是每个注释,每个注释都包含一个答复对象。
答案 0 :(得分:1)
Firestore查询是“浅”的,并且仅在被查询的集合内立即返回文档。他们不考虑子集合中的任何文档。要从子集合中获取文档,您需要对每个子集合进行另一个查询。
最好将所有评论和答复简单地放在一个集合中,并用一个布尔值将它们标记为一个布尔值(表明是否答复),然后在查询中将其用作过滤器。集合的大小不会对性能产生任何影响。