在firebase中的子节点之间循环
问题描述:
我正在研究大约50名玩家的幻想网络应用程序。下面是我的web应用程序模拟数据库:在firebase中的子节点之间循环
Users {
John: {
Selection: [1,2,3]
},
Mark: {
Selection: [1,2,4]
}
}
Players {
1: {
name: 'Messi',
agility: 90
},
2: {
name: 'Beckham',
agility: 54
},
3: {
name: 'Rooney',
agility: 10
},
4: {
name: 'Neymar',
agility: 84
}
}
客户做出选择他们作为“标志”和“约翰”后的例子已经完成,考虑到“用户”节点和“玩家”节点是数据库树中不同的子节点,有没有办法通过使用相应用户的选择数组来循环播放器数组?
如果是这样,可以在每个客户的选择的这个循环结果被反映在客户端
对于每个客户的选择的代码如下:
var ref = firebase.database().ref("players");
var ref3 = firebase.database().ref("users").child(uid).child("total");
$scope.players = $firebaseArray(ref);
$scope.selected = $firebaseArray(ref3);
“REF”是阵列Firebase数据库中有50名玩家,而“ref3”则是客户创建的6人游戏。
有没有办法映射或循环玩家阵列搜索“ref3”arrray中的6个选定的球员?
答
映射选择id
s到players
可以完成。
function getSelectedPlayers(selection, players, meta) {
return selection.map((id) => { ...meta, player: players[id] });
}
说的是,我们想要得到约翰选中的球员。我们可以这样写:
getSelectedPlayers(Users.John.Selection, Players, { uid: 'l30n4rd0' });
谢谢。这个函数不需要考虑每个客户的uid吗?这样每个客户的uid都会根据他们选择的对象而映射到特定的玩家? –
这里的功能只关心选择。如果您希望在映射数据中返回更多信息,则可以修改功能谓词以获取额外参数并将其返回到对象术语中。 –
我已经编辑了一下这个问题。映射仍然可以编辑吗?我尝试使用播放器阵列映射选定的数组,但它不起作用。 –