2016-09-03 9 views
0

私はAngularFireとFirebaseを使用してランキングでチームをソートしようとしています。AngularFireランク別カスタム注文

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" 

、私はリアルタイムで結果を見てvitories、引き分けと損失によってこれらのチームを注文する必要があります。

私はこのようなチームを示していますngのリピートを持っている:

だから、
<li ng-repeat="team in teams">{{team.name}}</li> 

、どのように私は勝利が3ポイントと同等であることを考慮に取って、勝利することによって、これらのチームを注文することができ、引き分けは1でありますポイントと損失は0ポイントですか?上記で

を例と一致し、順位がなければならない:

1 - チームB

2 - チームC

3 - チームD

4 - チームA

答えて

0

Firebase Databaseクエリは、ネストされた値が固定パスにある限り、ネストされた値で順序付けることができます。つまり、チームごとにスコアを保存する必要があります。この構造により

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()); 
    }); 
}); 

チームA

チームD

チームC

リーダーボードを取得するには、それらを反転する必要があります。