Firestore и Angular 7 проблема с методом подписки - PullRequest
0 голосов
/ 18 марта 2019

Я использую Firestore в angular 7 для получения данных.Когда я регистрируюсь с подпиской на наблюдаемое, полный метод никогда не выполняется.Идея?Мой код следующий:

  getMesuresJours(nombreJours: number): Observable<Mesure[]> {
    const _date = moment().startOf('day').subtract(nombreJours, 'days');
    return this.afs.collection(this.path, ref =>
                      ref.where('dateMesure', '>=', _date.toDate())
                         .orderBy('dateMesure', 'desc'))
                .snapshotChanges().pipe(map(changes => {
                  return changes.map(donnees => {
                    const mesure = donnees.payload.doc.data() as Mesure;
                    const _dateMesure: any = mesure.dateMesure;
                    // convertion de la date du serveur (Timestamp)
                    // en date Javascript pour puovoir l'afficher
                    // au niveau des graphes
                    mesure.dateMesure = (_dateMesure as firestore.Timestamp).toDate();
                    return mesure;
                  });
                }));

Использование услуги:

getMesures() {
    this.mesureService.getMesuresJours(this.nombrePeriode).subscribe({
        next: donnees => {
          this.mesures = donnees;
          console.log(this.mesures);
          if (this.mesures.length !== 0) {
            this.data = this.chartService.getFormatData(this.mesures, this.nombrePeriode, this.option);
           }
        },
        error: err => { console.log('Erreur lors de la recupération des données :', err); },
        complete: () => { console.log('Recupération complete'); }
      }
    );
  }

завершено: () => ... никогда не выполняется.

ДополнительноКогда я изменяю значение переменной numberPeriod в блоке next метода getMesure () , наблюдаемое посылает мнепредыдущие данные сначала перед новостями.Как решить эту проблему и сделать

this.mesures = donnees;
   console.log(this.mesures);
    if (this.mesures.length !== 0) {
                    this.data = this.chartService.getFormatData(this.mesures, this.nombrePeriode, this.option);
    }

только при поступлении новых данных?

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