Я не могу использовать оператор RxJs groupBy для наблюдаемой, созданной из AngularFireDatabase.list("expenses").snapshotchanges(...)
моя база данных firebase имеет следующие узлы
расходы
|_exp-1
|_ amount:200
|_ category:"cat-1"
|_ date: "2018-06-18T19:00:00.000Z"
|_exp-2
|_ amount:400
|_ category:"cat-2"
|_ date: "2018-06-18T19:00:00.000Z"
|_exp-3
|_ amount:500
|_ category:"cat-2"
|_ date: "2018-06-18T19:00:00.000Z"
|_exp-4
|_ amount:200
|_ category:"cat-3"
|_ date: "2018-06-18T19:00:00.000Z"
Я получаю данные, используя функцию getExpenses()
.
Я пытаюсь сгруппировать полученную наблюдаемую этой функции в groupExpensesbyCategory()
.
Однако я получаю сообщение об ошибке data.category
"Property 'category' does not exist on type 'any[]'. [2339]"
Моя функция getExpenses () работает, как и ожидалось, и возвращает наблюдаемый массив из 4 объектов расходов.
Почему groupBy не работает над моей наблюдаемой. Пожалуйста помоги.
getExpenses():Observable<any[]>{
return this.db.list('expenses')
.snapshotChanges().pipe(
map(changes =>
changes.map(c => ({ key: c.payload.key, ...c.payload.val()}))
)
);
}
groupExpensesbyCategory():Observable<any[]>{
return this.getExpenses().pipe(
groupBy(data=>data.category),
mergeMap(group=>group.pipe(toArray()))
);
}
Edit:
По просьбе в комментариях добавляю скриншот с результатом
this.getExpenses().subscribe(console.log)