试图显示计算器的最后10个计算

时间:2015-10-04 02:38:11

标签: javascript mongodb meteor

我可以让我的程序显示以前的所有计算但是我想将它限制在最近的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)
=>您的应用程序有错误。等待文件更改。

1 个答案:

答案 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 。但是,这与此处提出的原始问题无关。