【发布时间】:2019-06-14 13:57:58
【问题描述】:
我有两个 Firestore 集合,一个名为 parents,一个名为 children。这些集合是“相关的”,因为 parents 有一个 child 附加到它们的文档引用数组。
我想要完成的是:以高效的方式获取与单个parent“相关”的所有children。
我尝试了什么:我想出了这个功能强大的代码:
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 可以绑定到children。
感谢您在此处提供任何帮助或建议。谢谢!
【问题讨论】:
标签: javascript performance google-cloud-firestore non-relational-database