L oop внутри карты - PullRequest
       0

L oop внутри карты

0 голосов
/ 09 мая 2020

This is My console.log

Результатом оказывается сначала консольные 2 студента, а затем все данные удваиваются

Я хочу иметь

student 1 {
  data:H3FX.., data:I3ui.., data:RdYS.., ....
}

student 2 { 
  data:H3FX.., data:I3ui.., data:RdYS.., ....
}

Меня смущает столько раз отрисовка и синтаксис реакции.

this.state.allStudent.map(student => {
      console.log('student:'+student.id);
      studentid = student.id
      db.doc(this.props.location.state.userCourse).collection('assignment').get().then( snapshot =>{
          snapshot.forEach(doc=>{
            db.doc(this.props.location.state.userCourse).collection('assignment').doc(doc.id).collection('student').get().then(query=>{
              query.forEach(querysnapshot=>{
                if(querysnapshot.data().studentid == student.id){
                  console.log('data:'+doc.id)
                }
              })
            })
          })
      })
    })`

1 Ответ

0 голосов
/ 09 мая 2020

.map не ожидает выполнения каждого обещания, поэтому до того, как любой из вызовов базы данных будет иметь возможность быть завершенным, обрабатываются два первых журнала консоли, а затем каждый последующий журнал является выполняемым обещанием.

Теперь, что касается того, почему журналы удваиваются, это может быть либо из-за какой-то проблемы в способе получения данных, либо, возможно, из-за этого.

...