接收数据多对多关系 Firebase

Receive data many-to-many relation 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;
}

但它 return 是一个对象列表。我知道我可能 query/change 数据结构 to/in firebase 和 return 它作为 $firebaseArray 我更喜欢使用 angularfire。

您通常会根据希望如何检索数据来构建数据。

根据我的理解(如果我错了请纠正我)你想要让所有球员加入一个团队。为此,我将使用这种结构:

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

或者使用数组

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