Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试显示计算器的最后10次计算_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript 尝试显示计算器的最后10次计算

Javascript 尝试显示计算器的最后10次计算,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我可以让我的程序显示所有以前的计算,但我想限制到最近的10 这是我的问题 Template.keypad.helpers({ previous: function() { return previous.find(); } }); 我试着用这个来代替它 Template.keypad.helpers({ previous: function() { return previous.sort({_id:1}).limit(10);} }); 但是,当我实现第二块代码时,它不会显

我可以让我的程序显示所有以前的计算,但我想限制到最近的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)

=>您的应用程序有错误。正在等待文件更改。

查询的语法应如下所示:

Template.keypad.helpers({
  previous: function() { 
    return previous.find({}, {sort: {_id:1}, limit: 10}) 
});
Meteor.call('previousInsert', 2, 4, '+', 6)
但是,由于_id字段不包含升序整数,因此仅此项无法提供所需的结果。您最好的选择是保存时间戳并按该字段排序

我建议您遵循集合名称大写的惯例,以便更容易区分previous(您的助手方法名称)和previous(集合)

遵循“不信任客户端”的原则,我会在服务器上的Meteor方法中添加自动值,如下所示:

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   
    });
  }, 
});
然后像这样拜访客户:

Template.keypad.helpers({
  previous: function() { 
    return previous.find({}, {sort: {_id:1}, limit: 10}) 
});
Meteor.call('previousInsert', 2, 4, '+', 6)
并使用以下命令检索最后10个:

Previous.find({}, {sort: {datetime:-1}, limit: 10})
如果您使用的是Accounts软件包,请取消对user:this.userId行的注释,您可以将筛选器更改为:

Previous.find({user: Meteor.userId()}, {sort: {datetime:-1}, limit: 10})
并允许每个用户仅查看自己之前的10次计算

如果您不想使用Meteor方法进行插入,可以查看

这里有一个你想要实现的最简单的例子。
请注意,我不建议像这样使用eval。但是,这与此处提出的原始问题无关。

我如何为每个id添加时间戳?您不需要为_id字段添加时间戳,它是一个新字段。我将把它添加到回答中javascript api不支持您从python示例复制的流畅api调用样式我不知道将所有这些放在哪里。。。我将meteor方法放在if(meteor.isServer)语句中的startup.js文件中。然后我在键盘助手中添加了Previous.find,但是我不知道在meteor方法中要编辑什么才能使其适合我的程序。我应该在哪里调用meteor方法呢?我已经在上面的问题中添加了一些内容,显示了我现在收到的错误以及我遇到问题的代码