我关注此answer on stackoverflow。在控制台中,我得到正确的总和。流星汇总结果未在模板中显示
Meteor.publish('hoursTotal', function() {
var self = this;
var pipeline = [
{$group: {_id: "$userId", hours: {$sum: "$hours" }}}
];
var result = Reports.aggregate(pipeline);
_.each(result, function(result) {
self.added("hoursTotalSum", result._id, {
userId: result._id,
hours: result.hours
});
});
console.log(result);
self.ready();
});
我已经订阅了在客户端创建新的集合:
Meteor.subscribe('hoursTotalSum');
我的模板帮手:
Template.statsBrief.helpers({
hoursTotalSum: function() {
var currentUserId = Meteor.userId();
return Reports.find({userId: currentUserId});
},
});
我的模板:
{{#each hoursTotalSum}} {{hours}} {{/each}}
流星控制台retunrs这个:
个[ { _id: 'F8ZEWeKMoRfXaEGNa', hours: 30 },
I20151221-09:57:09.097(0)? { _id: 'ufALZHfhWyQ8pMkgD', hours: 85 } ]
流星模板返回此:
50 20 15
虽然总和是正确的发生,以及后端控制台证实,我挣扎着爬值到模板中。
你的解决方案工作得很好,reative等所有,但我似乎仍然无法访问模板。我能够在客户端的控制台中'Session.get('hoursTotal')',但在模板中,我正在努力 – Rexford
好吧,算了一下。 'res'对象包含索引'0',因此我简单地做了'Session.set('hoursTotal',res [0]);'这种方法更具反应性和趣味性。虽然我可以用另一种方法来工作,但我认为我比这更喜欢这种方式 – Rexford