У меня есть база данных Firestore, в которой есть поля, включающие в себя: day
, morning
, afternoon
, night
, с указанием времени дня c использования в течение этого времени. Я пытаюсь использовать этот код для усреднения значений morning
et c, в день (sunday
, monday
, ...).
import { Subscriber, Observable, from } from 'rxjs';
import { map, filter, toArray, reduce, switchMap, groupBy } from 'rxjs/operators';
import * as _ from 'lodash';
...
groupedData: any = [];
meter:Observable<any>;
meterId: string;
ngOnInit() {
this.meter = this.db.collection('meters').doc(this.meterId).collection('data').valueChanges();
from(this.meter)
.groupBy(x => x.day)
.flatMap(group => group.toArray())
.map(g => {
return {
day: g[2].day,
morning: _.sumBy(g, 'morning'),
afternoon: _.sumBy(g, 'afternoon'),
night: _.sumBy(g, 'night'),
}
})
.toArray()
.subscribe(d => this.groupedData = d);
}
и я получаю ошибку Property 'groupBy' does not exist on type 'Observable<any>'.
Я думаю, что я пытаюсь адаптировать это из более ранней версии кода Angular / Rx JS, но я неудачно с треском. Буду очень признателен за любую помощь. Спасибо.