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);
    }
}