Пользовательский порядок AngularFire по рейтингу

0

Я пытаюсь сортировать команды по ранжированию, используя 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
angularfire
firebase-realtime-database

1 ответ

0
Лучший ответ

Вы можете заказать запрос базы данных 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

Поэтому, чтобы получить таблицу лидеров, вам нужно их инвертировать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню