订阅方法的Firestore和Angular 7问题

时间:2019-03-18 09:59:39

标签: angular google-cloud-firestore

我在角度7中使用Firestore接收数据。当我注册可观察对象时,将永远不会执行complete方法。 一个主意? 我的代码如下:

  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'); }
      }
    );
  }

complete:()=> ...永远不会执行。

此外,当我更改变量numberPeriod的值时 在 getMesure() 方法的 next 块中,可观察对象在新闻发布之前首先向我发送以前的数据。 如何解决此问题并做

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

仅当新数据到达时?

0 个答案:

没有答案