我想在我的数据库条目中使用时间日志,并且我希望时间始终从服务器获取。
到目前为止我已经设置好了:
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/