在Meteor中对表中的列求和

时间:2015-01-20 18:32:02

标签: meteor

如果我在模板中创建一个表,是否有办法添加一行"被动总计"在桌子的底部使用Meteor?或者我是否必须编写代码来对列进行求和,就像在普通JavaScript中一样?

例如,给出表格......

State   Sales
NY      1234
FL       670
TX      2306
Total   4210

我可以使用一些反应技术来计算并保持显示4210的总细胞随着其他细胞的变化而变化吗?

4 个答案:

答案 0 :(得分:2)

另一种方法是使用MongoDB $sum aggregator

以Erik Johnson为例,你需要这样做:

// HTML

<div id="allSales">
  <h2><span>Total sales: </span>{{allSales}}</h2>
</div>

// JS

Template.templatename.helpers({    
  allSales: function() {
    var allSales =  allStates.aggregate( [ { $group: { _id: null, total: { $sum: "$sales" } } } ]);
    return allSales.total;

  },
});

答案 1 :(得分:0)

这就是我做到的方式 - 我确信这可能是一种更简单的方法,但我仍然是Meteor的初学者:

// HTML

<div id="allSales">
  <h2><span>Total sales: </span>{{allSales}}</h2>
</div>

// JS

Template.templatename.helpers({    
  allSales: function() {
    var allStates = Statescollection.find();
    var mappedItems = allStates.map((function(allStates) {return allStates.sales;}));
    var allSales = _.reduce(mappedItems, function(memo, num){ return memo + num; }, 0);
    return allSales;
  },
});

答案 2 :(得分:0)

我遇到了同样的问题,并为表格的列和行找到了以下解决方案

In Meteor, how can i do a sum of some computed fields in a table?

答案 3 :(得分:0)

我创建了包peppelg:mongo-sum。有了它,MyCollection.find().sum('field')将返回字段'field'中所有值的总和。