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



我有一个像波纹管这样的集合:

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

现在我必须获取所有集合集合2集合4

以我目前的知识,我必须像风箱一样分别获得它们:

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

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

我的期望是我想用集合立即调用它2

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

有可能像snapshot.col3.col4一样吗?

我为什么要这样?

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

像snapshot.col3.col4一样可能吗?

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

问题的一个可能解决方案可能是使用集合组查询,但正如文档所述,所有集合都应具有相同的名称。

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

  • Firestore - 在本地合并两个查询

最新更新