0

目标

我有一个名为“n”的顶级集合Players和一个名为“n”的会话变量。除了我的顶级集合之外,我还希望有一个Players基于的 top-'n' 集合player.points,它会根据Session.set('n', n)(当然,基础Players数据的任何更改)进行更新。

基本原理

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

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

由于我不想手动管理包含Players按 的值过滤的全局变量Session.get('n'),而且我当然不想每次渲染另一个时都计算 top-'n' player_item,所以我想设置一个额外的订阅到Players收藏。

4

1 回答 1

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);
}
于 2012-08-09T03:16:31.380 回答