在firebase中的子节点之间循环

时间:2017-09-03 22:34:09

标签: javascript angularjs firebase web-applications firebase-realtime-database

我正在制作一个大约50名玩家的幻想网络应用程序。下面是我的网络应用程序的模拟数据库:

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
}
}

客户选择" Mark"和"约翰"已经在示例中做了,考虑到"用户"节点和"玩家"节点是数据库树中不同的子节点,有没有办法说使用相应用户的选择数组循环播放器阵列?

如果是这样,这个循环结果可以反映在客户端的每个客户端选择

每个客户的选择代码如下:

  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个玩家的阵列,而#34; ref3"是由客户创建的6人阵列。

有没有办法在玩家阵列上进行映射或循环搜索" ref3" arrray?

1 个答案:

答案 0 :(得分:0)

可以将选择id映射到players

function getSelectedPlayers(selection, players, meta) {
    return selection.map((id) => { ...meta, player: players[id] });
}

说,我们想要得到约翰的选定球员。我们可以写:

getSelectedPlayers(Users.John.Selection, Players, { uid: 'l30n4rd0' });