Я использую 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);
}
только при поступлении новых данных?