Получение статистики сезона с Falcor

Как лучше всего подходить к получению статистики спортивного сезона с помощью Falcor и маршрутизатора Falcor?

Мой источник данных для сезона выводит данные, которые выглядят так:

{ id: 'recNMJfs4sqiJshna',
   fields: {
     Wins: 23,
     Losses: 51,
     Team: [ 'reckEYqAz3r8pUtUg' ],
     ... 
}

Мои идентификаторы - это гиды, и у меня работает маршрут teamById, который возвращает руководство сезона. Однако, чтобы попытаться предотвратить множество дублирующих маршрутов и кода, я пытаюсь создать маршрут seasonsIndex, который бы выглядел примерно так:

seasonIndex[0..10][year] or [seasonIndex[0..10]["2016"]

Где я могу выбрать данные, которые находятся в источнике данных сезона за определенный год. Надеюсь, я могу создать вывод, как это:

seasonIndex: {
   teamGuid: {
      2016: {
         Wins: 23,
         Losses: 51,
         ...
      },
      2015: {
         ...
      }
   },
   ...
 },
 teamById: {
    teamGuid: {
        Name: Team Name
    }
 }

У меня проблемы с выяснением маршрутов, которые мне понадобятся для построения этой модели ответа. Потому что я не уверен, как извлечь данные из источника данных другого сезона и связать их с уникальными руководящими указаниями команды, и при этом иметь возможность ссылаться на конкретные значения в данных сезона, такие как выигрыши, поражения или процент выигрышей.

1 ответ

Вам нужно построить маршрут по полю, которое вы хотите выставить. Например, для wins поле:

{
    route: "seasonIndex[{keys:teams}][{keys:years}].wins",
    get(pathSet) {
        const results = []
        for (team of pathSet.teams) {
            for (year of pathSet.years) {
                const wins = ... // get the wins for that team and year from the data source
                results.push({
                    path: ["seasonIndex", team, year, "wins"],
                    value: wins
                })
            }
        }
    }
}

Маршрут для wins и маршрут для losses вероятно, в конечном итоге будут похожи, так что вы можете свернуть их так:

{
    route: "seasonIndex[{keys:teams}][{keys:years}][{keys:property}]",
    get(pathSet) {
        const results = []
        for (team of pathSet.teams) {
            for (year of pathSet.years) {
                for (property of pathSet.properties) {
                    const value = ... // get the value of the property for that team and year from the data source
                    results.push({
                        path: ["seasonIndex", team, year, property],
                        value
                    })
                }
            }
        }
    }
}
Другие вопросы по тегам