Как синхронно вставить объект в массив - PullRequest
0 голосов
/ 05 февраля 2019

Я получаю данные из магазина, и теперь я хочу поместить данные в пустой массив в том же порядке, что и идентификатор документа.При наличии идентификатора документа данные должны быть извлечены и помещены в массив, если идентификатор документа отсутствует. В массив необходимо вставить «No Assigned Assigned».

getSalesmanName(signupId){
    let name;
      if(signupId){
        this.db.collection('users/').doc(signupId)
        .snapshotChanges().pipe().map(  res=> {
          const data=res.payload.data() as Users
          return data;
        })
        .subscribe(res=>{
          this.salesmanArray.push(res.first_name);
        })
      }else{
        this.salesmanArray.push("No Salesman Assigned")
      }      
  }

Ожидаемый результат: Name1, Name2, No Assigned Assigned, Имя3, Продавец не назначен

Фактический результат: Продавец не назначен, Продавец не назначен, Имя1, Имя2, Имя3

1 Ответ

0 голосов
/ 05 февраля 2019

Попробуйте:

getSalesmanName(signupIds) {
  const observableArray = signupIds.map(signupId => {
    if (signupId) {
      return this.db.collection('users/').doc(signupId)
        .valueChanges()
        .pipe(
          map(res => (res as User).first_name)
        )
    } else {
      return of('No Salesman Assigned');
    }
  });

  combineLatest(observableArray)
    .subscribe(res => this.salesmanArray = res);

}

Вот вам Рабочий образец StackBlitz для вашей ссылки.


PS: Я предполагаю, что вы используете Angular 7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...