在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' }); 
+0

谢谢。这个函数不需要考虑每个客户的uid吗?这样每个客户的uid都会根据他们选择的对象而映射到特定的玩家? –

+0

这里的功能只关心选择。如果您希望在映射数据中返回更多信息,则可以修改功能谓词以获取额外参数并将其返回到对象术语中。 –

+0

我已经编辑了一下这个问题。映射仍然可以编辑吗?我尝试使用播放器阵列映射选定的数组,但它不起作用。 –