Результаты AngularFire, подведены итоги в Observable - PullRequest
0 голосов
/ 02 июля 2019

У меня есть список данных, которые я хочу обобщить для моего возвращения. Например, в наборе данных Firebase у меня есть список результатов для продаж. Я хочу иметь возможность посчитать среднее значение и в ответе.

Data:
    1:
        Date: 20190501,
        Person: "John Doe",
        Sales: 2000
    2:
        Date: 20190501,
        Person: "Bill Smith",
        Sales: 1250
    3:
        Date: 20190501,
        Person: "John Doe",
        Sales: 1500
    4:
        Date: 20190503,
        Person: "Bill Smith",
        Sales: 2000
    5:
        Date: 20190503,
        Person: "John Doe",
        Sales: 1000
    6:
        Date: 20190503,
        Person: "Bill Smith",
        Sales: 1300

Когда я получаю эти данные, я хочу обобщить их по дате, по человеку:

20190501:
    John Doe: 
        Sales: 3500,
        Average: 1750
    Bill Smith: 
        SaleS: 1250,
        Average: 1250
20190503:
    John Doe: 
        Sales: 1000,
        Average: 1000
    Bill Smith: 
        Sales: 3300,
        Average: 1650

Получение списка записей достаточно просто через AngularFire2:

this.AfDb.list<ISales>('Data', ref => ref.orderByChild('Date') ).valueChanges();

Мой вопрос действительно на карте, flatMap и т. Д. О том, как обработать список возвращаемых данных для сортировки по подполям и сложить значения вместе в новом главном ключе с вычисленным средним значением, включая проверка на 0.

Я сделал это с другими типами данных, где я возвращаю наблюдаемое, а затем в моей функции subscribe () в функции ngOnInit () объединяю данные в традиционные коллекции (словарь), используя массив. Я думал, что это может работать с наблюдаемыми RxJS, но не знаю, как начать делать это.

...