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

标签 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)
    }
});

无法弄清楚我做错了什么。我没有收到任何错误消息。 “时间”属性只是空的。

最佳答案

首先,您的方法不起作用,因为客户端上的 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);
  }
});

关于javascript - Meteor.call 获取服务器时间以设置对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039926/

相关文章:

javascript - ionic 和 meteor ;根据提示重置密码

javascript - 将 JS 数组转换为 HTML 表 |奇怪的 <tbody> 标签?

javascript - 为不同的用户创建一个通用页面

javascript - 无法绑定(bind)到没有标识符的 Controller + angularjs

javascript - 通过检查映射中的匹配值来过滤数组中的对象 (JavaScript)

javascript - Angular.js - 在指令中设置 ng-pattern 时 ngModel 值未定义

node.js - 更新 Meteorjs 应用程序后,MongoDB 数据库会发生什么情况?

deployment - meteor 应用程序如何知道它是在开发、测试还是生产环境中运行?

javascript - 如何使用 Meteor 发送文本?

javascript - 在 Meteor 中控制用户访问