我的firebase数据库如下:
Users {
askdfasdf: John: {
Selection: [1,2,3]
},
fasfadffe: Mark: {
Selection: [1,2,4]
}
}
Players {
{
name: 'Messi',
agility: 90,
id: 1
},
{
name: 'Beckham',
agility: 54,
id: 2
},
{
name: 'Rooney',
agility: 10,
id: 3
},
{
name: 'Neymar',
agility: 84,
id: 4
}
}
数据库节点通过以下代码进入范围:
var ref = firebase.database().ref("players");
var ref3 = firebase.database().ref("users").child(uid).child("total");
$scope.players = $firebaseArray(ref);
$scope.selection = $firebaseArray(ref3);
有没有办法在搜索匹配值时迭代或循环遍历两个数组?具体来说,有没有办法循环“玩家”阵列,以搜索id
匹配“选择”数组中的数字的玩家。
最终目标是在选择完成后,让每个客户的选择反映在页面上。
我的数据库安全规则如下:
{
"rules": {
"players":{
".read" : "auth != null",
".write" : "auth != null",
".indexOn": "id"
}
}
}
我已尝试按如下方式迭代每个选择:
$scope.getSelectedPlayers = function (){
for (let i = 0; i<$scope.selection.length; i++){
return $scope.selection[i];
var ref=
firebase.database().ref("players").orderByChild("id").equalTo($scope.selection[i]);
}
但这不起作用
答案 0 :(得分:0)
您可以使用id
的对象作为单个玩家的键。
通过迭代users
,您可以通过id
添加所需信息来访问播放器信息。
var players = [{ name: 'Messi', agility: 90, id: 1 }, { name: 'Beckham', agility: 54, id: 2 }, { name: 'Rooney', agility: 10, id: 3 }, { name: 'Neymar', agility: 84, id: 4 }],
object = Object.create(null);
players.forEach(p => object[p.id] = p);
console.log(object);
&#13;
答案 1 :(得分:0)
您可以使用equalTo
查询每个选定的ID,请记住,您必须在firebase安全规则中为Player.id编制索引。
然后简单地说:
firebase.database().ref("players").orderByChild("id").equalTo('selected_id_here');
您可以在firebase文档中找到更多内容:here