是否可以从父集合(Firebase Cloud Firestore)访问子集合?

时间:2019-07-19 13:49:51

标签: javascript firebase google-cloud-firestore

我有一个像下面这样的收藏夹:

db.collection("col1/doc1/col2/doc2/col3/doc3/col4").get();

现在我必须获取所有集合 collection2 collection4

以我目前的知识,我必须像波纹管一样将它们分开:

db.collection("col1/doc1/col2").get();

db.collection("col1/doc1/col2/doc2/col3/doc3/col4").get();

我的期望是我想立即通过 collection2

调用它
db.collection("col1/doc1/col2").get().then(snapshot=>{
   //here something like snapshot.col3.col4
});

是否可能像snapshot.col3.col4

我为什么要这样?

因为我不必在服务器上多次调用它,否则它可以提高性能并使其更快。

1 个答案:

答案 0 :(得分:2)

  

有可能像snapshot.col3.col4吗?

不,不是。 Firestore中的查询很浅,这意味着只能从运行查询的集合中获取项目。您无法同时从顶级集合和具有不同名称的子集合中获取文档。 Firestore不支持一次性使用不同名称的跨不同集合的查询。单个查询只能使用单个集合中的文档属性。

针对您的问题的一种可能的解决方案可能是使用Collection group queries,但正如文档所述,所有集合都应使用相同的名称。

另一个解决方法可能是创建两个单独的查询并合并结果客户端。为此,我建议您从以下文章中查看答案:

相关问题