Firestore:参考 type.How 等待每个结果的所有 get() 调用
Firestore: reference type.How wait for all get() call of evey result
我正在从 firestore 数据库中获取 Observable 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 数据库中获取 Observable 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);
}
}