2016-06-19 20 views
1

私はこれに延長された質問がありますquestionデータを多対多の関係で受け取りますFirebase

プレーヤーが複数のチームに所属する場合はどうなりますか?

私はこの

JSON

"Players" : { 
    "-YRHd4IjrjsBXx__B" : { 
     "name" : "The best forward", 
     "creationDate" : "2016-02-26 15:50:39", 
     "teams" : { 
     "-KAByPeIz4IjrjsBXx__B" : true, 
     "-KEFPuCXcqOah_GJwsMCu" : true, 
     "-KEwuQxvGpYTEJ7YQ58-l" : true, 
     "-KKF8vPtf8J7cfqFh2PLm" : true 
     }, 
    }, 
    etc... 
    } 

選手-service.js

getPlayers: function(teamid) { 
    var Players = {}; 
    var teamsIndex = ref.child('teams/' + teamid + '/players/'); 
    var playersIndex = ref.child('players/'); 
    teamsIndex.on('child_added', function(snapshot) { 
    var playerKey = snapshot.key; 
    playersIndex.child(playerKey).on('value', function(playersnap){ 
     $timeout(function() { 
      console.log("key", playerKey); 
      players[playerKey] = playersnap.val(); 
     }); 
    }); 
    }); 
    teamIndex.on('child_removed', function(snapshot) { 
    $timeout(function(snapshot) { 
     delete players[snapshot.key()]; 
    }); 
    }); 

    return players; 
} 

を持っている。しかし、それは、オブジェクトのリストを返します。私はおそらくデータ構造をfirebaseに照会/変更し、それをanglefireを使用するのと同じように$ firebaseArrayとして返すことができることを知っています。

+0

を使用して意味しますか? –

+0

私は混乱しています。私はnosqlとSQLの世界の間に詰まっています。私は私の解決策が行く方法であるかどうか疑問に思います。このソリューションに固執するか、データをより非正規化する必要があるかもしれません。まだダイスしていない。私はもっ​​と非正規化しようとしている瞬間です。 aka put teamid:プレーヤーノードのルートに真。 ' "プレイヤー":{ "-YRHd4IjrjsBXx__B":{ "名前": "最高の前進"、 "のCreationDate": "2016年2月26日15時50分三十九秒"、 "-KAByPeIz4IjrjsBXx__B":真、 "-KEFPuCXcqOah_GJwsMCu":true、 } } –

答えて

2

通常、データの取得方法に応じてデータを構造化します。

あなたがチームのすべての選手を取得したいと思っています。この目的のために私は、この構造を使用します。あなたはgetPlayerは、配列の代わりに、キーと値のオブジェクトを返すようにしたいということ

"Players": { 
    "player1": {...}, 
    "player2": {...}, 
    "player3": {...} 
}, 
"Teams': { 
    "team1": {...}, 
    "team2": {...} 
}, 
"TeamPlayers" : { 
    "team1": { 
    "player1": true, 
    "player2": true 
    }, 
    "team2": { 
    "player1": true, 
    "player3": true 
    } 
} 

または配列

"TeamPlayers" : { 
    "team1": [ 
    0: "player1", 
    1: "player2" 
    ] 
} 
+0

私はあなたを愛しています!真剣に私は! –

+1

ああ、お手伝いを喜んで! upvotingをありがとう。私は別の解決策で編集しました –

+1

このフレーズは私にそれを作った:「あなたは通常、データをどのように取得するかによってデータを構造化する」 –