我在Meteor中创建一个简单的应用程序,用于查找数据库中的项目并返回与用户名匹配且在过去24小时内创建的项目计数。
如果从查询中删除createdAt
逻辑,模板将加载用户提交的数据库中的条目总数。使用createdAt
逻辑,模板呈现在辅助条件中声明的Loading
而不是实际计数。
在/server/methods.js
我有:
Meteor.methods({
Counter: function () {
return Items.find({
username: Meteor.user().username,
createdAt: {$gt: Date.now()*1000 - 24*60*60}
}).count();
}
});
在/client/home/helpers.js
我有:
Template.home.created = function() {
Meteor.call('Counter', function(err, result) {
Session.set("theCounter", result);
});
};
Template.home.helpers({
counter: function() {
return Session.get("theCounter") || "Loading";
}
});
然后在/client/home/home.html
<template name="home">
Submitted In Last 24 Hours: {{ counter }}
</template>
答案 0 :(得分:0)
代码有两个问题:
首先,如果计数器为0,return Session.get("theCounter") || "Loading";
将始终显示“loading”。您需要这样做:
var c = Session.get('theCounter');
if (c != null)
return c;
else
return 'loading';
接下来,日期数学不正确。 Date.now()
已经是毫秒,所以你需要修改你的查询:
Date.now() - 24*60*60*1000