【发布时间】:2016-06-19 16:49:32
【问题描述】:
我对此question 有一个扩展问题。
如果玩家属于多个团队怎么办?
我有这个
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...
}
players-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 中查询/更改数据结构并将其作为 $firebaseArray 返回,因为我更喜欢使用 angularfire。
【问题讨论】:
-
你的意思是想让getPlayer返回一个数组而不是一个键值对象?
-
我很困惑。我被困在 nosql 和 SQL 世界之间。我想我想知道我的解决方案是否可行。可能需要坚持这个解决方案或更多地非规范化我的数据。还没切我正试图进行更多非规范化的那一刻。又名将 teamid: true 放在播放器节点的根目录中。
"Players" : { "-YRHd4IjrjsBXx__B" : { "name" : "The best forward", "creationDate" : "2016-02-26 15:50:39", "-KAByPeIz4IjrjsBXx__B" : true, "-KEFPuCXcqOah_GJwsMCu" : true, } }
标签: firebase angularfire firebase-realtime-database