Использование данных, возвращаемых базой данных Firebase Realtime в TypeScript - Ionic 3 - PullRequest
0 голосов
/ 29 мая 2018

Я сейчас использую базу данных Firebase Realtime, и у меня возникают проблемы с использованием возвращенных данных базы данных в TypeScript.

Когда я делаю этот код, я могу без проблем использовать результаты в HTML:

TypeScript:

clientsRef: AngularFireList<any>;
clients: Observable<Client[]>;

constructor(private db: AngularFireDatabase) {
    this.clientsRef = db.list('clients');
    this.clients = this.clientsRef.snapshotChanges().pipe(
      map(changes =>
        changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
      )
    );
  }

HTML:

<ion-item *ngFor="let client of clients | async" (click)="update(client)">
      {{client.name}}
</ion-item>

Эта операция работает нормально для меня.Моя проблема возникает, когда я хочу использовать переменную this.clients в коде TypeScript.Я не могу получить доступ к данным, таким как имя, например, так же, как я использую в HTML.

Когда я печатаю в консоли переменную, результат будет:

Observable {_isScalar: false, source: Observable, operator: MapOperator}

Я не знаю, как показать реальные данные, возвращенные с использованием TypeScript.Кто-нибудь может мне помочь?

Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

Хотя я не знаком с snapshotChanges и pipe (),

    this.list.on('value', itemSnapshot=> {
            this.data = [];
            console.log('************',itemSnapshot);
            itemSnapshot.forEach( itemSnap => {
                  console.log(itemSnap.val());
                  this.data[itemSnap.key] = itemSnap.val();
            });
    })

Важно отметить, что .val ()

В вашем случае, если у «клиентов» естьchilds говорит имя, компанию и т. д., вы можете использовать:

itemSnap.val().name
itemSnap.val().company

, чтобы извлечь нужные вам значения.Надеюсь, это поможет!

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