我有一个像下面这样的收藏夹:
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
?
我为什么要这样?
因为我不必在服务器上多次调用它,否则它可以提高性能并使其更快。
答案 0 :(得分:2)
有可能像snapshot.col3.col4吗?
不,不是。 Firestore中的查询很浅,这意味着只能从运行查询的集合中获取项目。您无法同时从顶级集合和具有不同名称的子集合中获取文档。 Firestore不支持一次性使用不同名称的跨不同集合的查询。单个查询只能使用单个集合中的文档属性。
针对您的问题的一种可能的解决方案可能是使用Collection group queries,但正如文档所述,所有集合都应使用相同的名称。
另一个解决方法可能是创建两个单独的查询并合并结果客户端。为此,我建议您从以下文章中查看答案: