我可以让我的程序显示以前的所有计算但是我想将它限制在最近的10次。
这是我的问题......
Template.keypad.helpers({
previous: function() { return previous.find(); }
});
我尝试用这个替换它......
Template.keypad.helpers({
previous: function() { return previous.sort({_id:1}).limit(10);}
});
但是,当我实现第二个代码块时,它不会显示我的集合中的任何项目。
我可以做些什么来完成这项工作?谢谢。
这是我的startup.js文件
if (Meteor.isServer) {
Meteor.startup(function () {
if(Previous.find().count() === 0){
Previous.insert({sum:"1+1", answer:"2"});
}
});
Meteor.methods({
previousInsert: function(arg1, operator, result){
return Previous.insert({
arg1:calculation,
operator:"=",
result:result,
datetime: new Date(),
//user: this.userId
});
},
});
}
这是我启动程序时遇到的错误...
=>错误阻止了启动:
使用ecmascript处理文件时(对于目标os.linux.x86_64):
server / startup.js:8:18:server / startup.js:意外的令牌(8:18)
=>您的应用程序有错误。等待文件更改。
答案 0 :(得分:2)
查询的语法应如下所示:
Template.keypad.helpers({
previous: function() {
return previous.find({}, {sort: {_id:1}, limit: 10})
});
然而,由于_id字段不包含升序整数,因此单独不会为您提供所需的结果。您最好的选择是保存时间戳并按该字段排序。
我建议您遵循大写集合名称的惯例,这样可以更容易区分先前(您的帮助方法名称)和上一个(集合)。
遵循“不信任客户”的原则,我会在服务器上添加Meteor方法中的autovalues,如下所示:
Meteor.methods({
previousInsert: function(arg1, arg2, operator, result){
return Previous.insert({
arg1:arg1,
arg2:arg2,
operator:arg1,
result:result,
datetime: new Date(),
//user: this.userId
});
},
});
然后像这样打电话给客户:
Meteor.call('previousInsert', 2, 4, '+', 6)
用以下内容检索最后10个:
Previous.find({}, {sort: {datetime:-1}, limit: 10})
如果您正在使用Accounts包取消注释用户:previousInsert中的this.userId行,您可以将过滤器更改为:
Previous.find({user: Meteor.userId()}, {sort: {datetime:-1}, limit: 10})
并允许每个用户只查看他们自己以前的10个计算
如果您不想为插页添加Meteor方法,可以查看here。
以下是您尝试实现的最小meteorpad示例。 请注意,我不建议像这样使用eval 。但是,这与此处提出的原始问题无关。