Firebase中collectionGroup获取子集合父集合路径异常问题咨询
问题解答
这不是Firebase的bug,是你对ref.parent的作用理解有偏差。
核心原因:
- 当你通过
collectionGroup('stats')获取到stat文档时,stat.ref指向的是**stats子集合里的单个文档**,它的parent属性对应的是这个stats子集合本身,而不是包含stats的父文档。 - 你当前打印的
stat.ref.parent.path,其实是stats子集合的完整路径,所以才会出现类似02pw7ZM3OtUS3irhO1aF/02pw7ZM3OtUS3irhO1aF/stats的结果——这里的前两段是父文档的ID路径,最后一段是子集合名称。
解决方法:
如果你想获取stats子集合的父文档(也就是你预期的projects开头的路径),需要再往上遍历一级,调用stat.ref.parent.parent.path。示例代码如下:
const testRef = db.collectionGroup('stats') const statsTest = await testRef.get() statsTest.forEach((stat) => { // 获取stats子集合的父文档路径 console.log(stat.ref.parent.parent.path) })
这样输出的路径就会以projects开头,符合你的预期。
补充说明:
之前测试根集合dealers时,stat.ref.parent.path输出dealers符合预期,是因为根集合里的文档的parent就是根集合本身,所以路径直接是集合名称。
内容的提问来源于stack exchange,提问作者Rooster242
相关产品推荐
相关产品推荐

