Firestore:引用类型。如何等待evey结果的所有get()调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firestore:引用类型。如何等待evey结果的所有get()调用相关的知识,希望对你有一定的参考价值。
我从firestore DB获取Observable Ticket []>,ticket中的一个字段是引用类型。
当我订阅结果时,我使用:
getTickets()
.subscribe(listOfTickets=> {
//loop the array
listOfTickets.forEach(ticket => {
ticket.personRef.get() //this is the reference type field
.then(res => { //getting information
let person = res.data();
}
}
....
}
我怎样才能等待所有结果:
ticket.personRef.get()
我正在尝试使用forkJoin,但我仍然不明白如何应用于此。可观察的listOfTickets有很多结果。
答案
不要使用forEach
。使用for
async someFunction() {
getTickets().subscribe(async listOfTickets => {
const allTickets = [];
for (let i = 0; i < listOfTickets.length; i++) {
await listOfTickets [i].personRef.get().then(snapshot => {
return snapshot.data();
}).then(ticket => {
allTickets.push(ticket);
})
}
console.log(allTickets);
})
}
另一答案
谢谢,您的帮助指出了我正确的方向来解决问题,只需稍加改动,这是最终的代码:
async someFunction() {
getTickets()
.subscribe(async listOfTickets => {
const allTickets = [];
var ticket = null;
for (let i = 0; i < listOfTickets.length; i++) {
await listOfTickets[i].personRef.get().then(snapshot => {
ticket = snapshot.data();
})
allTickets.push(ticket);
}
}
以上是关于Firestore:引用类型。如何等待evey结果的所有get()调用的主要内容,如果未能解决你的问题,请参考以下文章
基于引用数据类型的 Firebase Firestore 安全规则