Meteor.call获取服务器时间来设置对象的属性?

时间:2014-09-25 13:31:32

标签: javascript meteor

我想在我的数据库条目中使用时间日志,我希望始终从服务器获取时间。

到目前为止,我对此进行了设置:

Meteor.methods({
    getTimeFromServer: function () {
        var serverTime = new Date().toLocaleTimeString();
            return serverTime;
    }
});

我想像这样使用它们:

Template.myTemplate.events({
    'click .btn': function(e) {
        var propsOfObject = {
            name: $('#idName').val(),
            email: $('#idEmail').val(),
            time: Meteor.call('getTimeFromServer')
            }
        Meteor.call('addItemToDataBase', propsOfObject)
    }
});

无法弄清楚我做错了什么。我没有收到任何错误消息。时间' -property只是空的。

1 个答案:

答案 0 :(得分:3)

首先,您的方法无法正常工作,因为客户端上的Meteor.call始终是异步的:它不会立即返回任何内容,您必须提供回调以便稍后获取结果。

此处更多内容:Meteor.methods returns undefined

我认为您应该直接在插入方法中获取服务器时间,而不是在插入之前尝试从服务器获取服务器时间:它将为您节省方法调用并且它也更简单。

客户:

Template.myTemplate.events({
  'click .btn': function(e) {
    var propsOfObject = {
      name: $('#idName').val(),
      email: $('#idEmail').val()
    };
    Meteor.call('addItemToDataBase', propsOfObject)
  }
});

服务器:

Meteor.methods({
  addItemToDatabase:function(fields){
    check(fields,{
      name:String,
      email:String
    });
    //
    _.extend(fields,{
      time:new Date().toLocaleTimeString()
    });
    //
    MyCollection.insert(fields);
  }
});