gpt4 book ai didi

javascript - 如何在单个查询中选择多个文档引用?

转载 作者:行者123 更新时间:2023-11-30 19:29:18 25 4
gpt4 key购买 nike

我有两个 Firestore 集合,一个叫做 parents,一个叫做 children。这些集合是“相关的”,因为 parents 有一组 child 文档引用附加到它们。

我想要完成的是:以高效的方式获取与单个 parent“相关”的所有 children。 p>

我的尝试:我想出了这段功能很好的代码:

this.subscription = this.props.firebase.parent().onSnapshot((parent) => { // get a single parent

let childrenPromises = (parent.data().children || []).map(child => this.props.firebase.child(child.id).get()); // build array of promises

Promise.all(childPromises) // resolve all promises
.then(children => {
// children.data() has the data I need :)
});
});

总结:我检索了 child 文档引用的列表,然后使用 promises 单独检索所有这些引用。这很好用,但会用查询请求轰炸我的数据库。

我想改进什么:我能否以某种方式将其重构为一个性能更高的查询?理想情况下,这将是一个单一的查询来防止对数据库的如此多的请求。

我尝试过的方法:我已经通读了所有 Firestore 文档和 Stack Overflow 帖子,但运气不好。我确实读到过将数据库去规范化是一个选项,但我宁愿不这样做,因为多个 parents 可以绑定(bind)到 children

如有任何帮助或建议,我们将不胜感激。谢谢!

最佳答案

不,不可能在单个查询中查询不同名称的集合。没有“加入”类型的操作。

你现在做的不是真的“炮轰”Firestore。它旨在跟上许多文档读取,并且所有查询都通过单个连接进行流水线处理。这里的性能或可伸缩性并不是真正的问题,除非您请求的数据超出您的需要。事实上,Cloud Firestore 将不允许您做任何无法扩展的事情。所有索引操作都可以大规模扩展。

关于javascript - 如何在单个查询中选择多个文档引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56599706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com