Я пытаюсь сортировать команды по ранжированию, используя AngularFire и Firebase.
В Firebase у меня есть 4 команды, где я храню только имя. Я также храню спички, в которых есть ссылка на обе команды, оспаривающие этот матч и оценку для каждого из них.
Узел совпадений выглядит так:
matches
-KQgphN_5692GySN0Oxz
home_team: teamA
away_team: teamB
score
home: 1
away: 2
-KQlu6XLak6LgAr9cTty
home_team: teamC
away_team: teamD
score
home: 2
away: 2
И узел команд:
teams
teamA
name: "Team A"
teamB
name: "Team B"
teamC
name: "Team C"
teamD
name: "Team D"
Итак, мне нужно заказать эти команды по видам, рисункам и потерям, просмотрев результаты в реальном времени.
У меня есть ng-repeat, в котором перечислены такие команды:
<li ng-repeat="team in teams">{{team.name}}</li>
Итак, как я могу заказать эти команды победами, принимая во внимание, что выигрыш эквивалентен 3 баллам, ничья - 1 балл, а потеря - 0 очков?
В примере с приведенными выше примерами ранжирование должно быть:
1 - Команда В
2 - Команда C
3 - Команда D
4 - Команда А
Вы можете заказать запрос базы данных Firebase по вложенному значению, если это вложенное значение находится по фиксированному пути. Это означает, что вам нужно сохранить оценку для каждой команды, например
teams
teamA
name: "Team A"
score: 20
teamB
name: "Team B"
score: 12
teamC
name: "Team C"
score: 42
teamD
name: "Team D"
score: 31
С помощью этой структуры вы можете загрузить лучшие команды, чтобы:
var leaders = ref.child('teams').orderByChild('score').limitToLast(3);
leaders.on('value', function(snapshot) {
leaders.forEach(function(leaderSnapshot) {
console.log(leaderSnapshot.child('name').val());
});
});
Это напечатает:
Команда А
Команда D
Команда C
Поэтому, чтобы получить таблицу лидеров, вам нужно их инвертировать.