typescript - Obține date din QuerySnapshot


Vreau să obțin date din cloud firestore-ul meu. Colecția se numește 'feedback'. Codul următor funcționează

  constructor(private fireStore: AngularFirestore) {
    this.fireStore.collection('feedback')
                  .get()
                  .subscribe((item: firebase.firestore.QuerySnapshot) => {
      this.feedbackItems = item.docs.map((dataItem: firebase.firestore.QueryDocumentSnapshot) => dataItem.data());
    });
  }

cu importul

import { AngularFirestore } from '@angular/fire/firestore';

Totuși, this.feedbackItems este acum un array al obiectului meu de feedback din Cloud Firestore. Este posibil să obțin rezultatele ca un observable? Care este modul profesionist de a obține datele?

Am găsit mai multe soluții pe StackOverflow, totuși unele funcții nu erau disponibile (presupun că din cauză că se folosește o bibliotecă diferită sau JavaScript?)

Răspuns #1

Este posibil să obținem rezultatele ca un observable?

Poți importa map din rxjs/operators pentru a modifica răspunsul. Apoi îl poți atribui unui anumit observable.

this.feedbackItemObservable = this.fireStore.collection('feedback')
  .get()
  .pipe(map((item:firebase.firestore.QuerySnapshot) => {
    return item.docs.map((dataItem: firebase.firestore.QueryDocumentSnapshot) => dataItem.data());
  }));