Как преобразовать наблюдаемое из массива наблюдаемых данных в наблюдаемое из массива данных - PullRequest
0 голосов
/ 09 января 2019

Я новичок, работаю над проектом Ionic с Firebase Firestore.
Будет два типа клиентов, группа A и группа B.
Это приложение для социальных сетей, в котором люди из A могут быть друзьями из B и наоборот, но не из одной группы.

Поскольку я запрашиваю данные для пользователя из группы A, в данных пользователя будут подключены пользователи из группы B.

Итак, мой код похож на:

this.items = this.firestore.collection<Data>('a_users',ref => ref.where('UID','==',getUID()).valueChanges().map(
  users => users[0].conn.map(conn_id => {
    return this.firestore.collection<Data>('b_users', ref => ref.where('UID','==',conn_id)).valueChanges().map(b => b[0]);
  })
)

Он вернет Observable<Observable<Data>[]>, но когда я попытался отобразить в ion-list в HTML, используя async pipe, результат был #undefined.

Цель состоит в том, чтобы правильно отобразить вышеуказанные данные (с немедленным ответом при изменении элемента) в ion-list.

1 Ответ

0 голосов
/ 10 января 2019

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

this.items = this.firestore.collection<Data>('a_users',ref => ref.where('UID','==',getUID()).valueChanges().map(
  users =>users[0].conn.map(conn_id => {
    return this.firestore.collection<Data>('b_users', ref => ref.where('UID','==',conn_id)).valueChanges().map(b => b[0]);
  })
)

HTML

  <ion-list *ngFor="let user of users | async"> 
     <strong> {user.props | async}</strong>
  </ion-list>
...