GroupBy на Observable из AngularFireDatabase.list не работает - PullRequest
0 голосов
/ 14 января 2019

Я не могу использовать оператор 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)

Result of getExpenses()

...