我有一个像波纹管这样的集合:
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 - 在本地合并两个查询