多个订阅同一个Meteor Collection

时间:2012-08-08 21:14:41

标签: meteor

目标

我有一个名为Players的顶级Collection和一个名为'n'的Session变量。除了我的顶级系列之外,我还想根据Players创建一个顶级'{n} player.points的集合,该集合会根据Session.set('n', n)更新(和,当然,任何更改基础Players数据。)

原理

我想要TopNPlayers的原因是因为在每个播放器模板中(称之为Template.player_item)我想提供几个变量:

  • Template.player_item.isInTopN,设置一个CSS类来突出显示一个玩家,如果它位于顶部的'n'点中
  • Template.player_item.PointsVsBaseline,它给出了该玩家的分数与TopNPlayers中的第n个玩家之间的差异。

由于我不想手动管理包含Players的全局变量,该变量按Session.get('n')的值过滤,我当然不希望每次都计算top-'n'渲染另一个player_item,我想设置Players集合的额外订阅。

1 个答案:

答案 0 :(得分:1)

我不确定你需要一个单独的集合,光标是不是可以做到这一点?

类似的东西:

var topNPlayers = function() { 
  return Players.find({}, {limit: Session.get('n')}); 
}

Template.player_item.isInTopN = function() {

  // there are a bunch of ways you could do this step...
  _.include(topNPlayers().fetch(), this);
}