Javascript 如何在一个查询中选择多个文档引用?

Javascript 如何在一个查询中选择多个文档引用?,javascript,performance,google-cloud-firestore,non-relational-database,Javascript,Performance,Google Cloud Firestore,Non Relational Database,我有两个Firestore集合,一个叫做父母,另一个叫做孩子。这些集合是“相关”的,父集合附带了一系列的子集合文档引用 我想完成的是:获取所有与单个父项以性能方式“相关”的子项 我尝试的内容:我想出了一个功能强大的代码: this.subscription=this.props.firebase.parent() 让ChildrenPromissions=(parent.data().children | |[]).map(child=>this.props.firebase.child(chi

我有两个Firestore集合,一个叫做
父母
,另一个叫做
孩子
。这些集合是“相关”的,
父集合
附带了一系列的
子集合
文档引用

我想完成的是:获取所有与单个
父项
以性能方式“相关”的
子项

我尝试的内容:我想出了一个功能强大的代码:

this.subscription=this.props.firebase.parent()
让ChildrenPromissions=(parent.data().children | |[]).map(child=>this.props.firebase.child(child.id.get());//构建承诺数组
承诺。所有(儿童承诺)//解决所有承诺
.然后(儿童=>{
//children.data()具有我需要的数据:)
});
});
总结:我检索
子文档引用的列表,然后使用Promissions单独检索所有引用。这非常有效,但会用查询请求轰炸我的数据库

我想改进的地方:我能不能以某种方式将其重构为一个更高效的查询?理想情况下,它将是一个单一的查询,以防止对数据库的如此多的请求

我尝试过的内容:我已经阅读了所有Firestore文档和堆栈溢出帖子,但都没有找到。我确实读到过,将数据库反规范化是一种选择,但我宁愿不这样做,因为多个
家长
可以绑定到
孩子


在此,任何帮助或建议都将不胜感激。谢谢

不,不可能在单个查询中跨不同名称的集合进行查询。没有“联接”类型的操作


你现在所做的并不是真正的“轰炸”消防商店。它是为了跟上许多文档读取而构建的,所有查询都通过单个连接进行管道化。在这里,性能或可伸缩性并没有真正的问题,除非您请求的数据超过了您的需要。事实上,CloudFireStore将不允许您做任何不可扩展的事情。所有索引操作的规模都很大。

从firebase团队本身来看,我想这回答了我的问题。非常感谢您确认这看起来没问题。作为一个来自关系数据库世界的人,我认为它闻起来很臭,但我想不是!如果它的规模,这是伟大的。在使用统计中是否有一个地方描述什么构成“读取”?当试图保持低成本时,这很重要。