我有赞成票和反对票,它们都在集合中,并在模板中显示为 {{upvotes}}
和 {{downvotes}}
。
所以,如果我有一个显示总票数的第三个显示器,我应该通过如下所示的助手来完成它(顺便说一下,不起作用):
在helper.js中:
Template.registerHelper('totalvotes', function(upvotes, downvotes) {
var totalvotes = upvotes + downvotes;
return totalvotes;
});
在 html 中:
{{ totalvotes "Vote"}}
我记得一些关于性能的事情,而不是在客户端级别计算所有字段。在这种情况下,在主对象集合中增加总投票数而不是在客户端中添加一个助手会更好吗? (务必包括建议代码的粗略形式)。谢谢!
例如在集合(字段)中:
upvotes: 0
downvotes: 0
然后是增量逻辑
$inc: {upvotes: 1}
$inc: {downvotes: 1}
到
upvotes: 0
downvotes: 0
totalvotes: 0
$inc: {upvotes: 1}
$inc: {downvotes: 1}
$inc: {totalvotes: 1}
最佳答案
您不应该太从字面上理解此建议,因为它实际上取决于您正在做什么。
对于这种特殊情况,我认为在客户端使用助手进行数学计算(这只是对助手的额外调用,它将执行一些非常简单的处理)比在客户端添加额外的非规范化字段要好得多数据库,这会增加更大的总体开销(磁盘存储、内存空间、网络数据)。 <小时/>为您提供灵感:
“程序员浪费大量时间思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响。我们应该忘记小的效率,大约 97% 的时间都说:过早的优化是万恶之源。但我们不应该放弃那关键的 3% 的机会。” ——唐纳德·高德纳
关于javascript - 在 Meteor 中使用 Handlebars 进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30694857/