我有以下代码,
Meteor.methods({
markPaid: function(expense) {
check(this.userId, String);
check(expense.id, String);
Expenses.update({'_id': expense.id}, {$set: {paid: true}}, function(error) {
return error;
});
}
});
通过
调用Meteor.call('markPaid', expense, function(error, result) {
//handle error if any.
});
当我从我的客户端调用此代码时,代码执行客户端,就像meteor所谓的乐观UI一样,但该方法不会运行服务器端。我的实际数据库永远不会更新。
谢谢!
答案 0 :(得分:2)
根据Meteor上的Meteor文档(c.f。https://docs.meteor.com/api/methods.html#Meteor-call)
Meteor.call(name,[arg1,arg2 ...],[asyncCallback])
ARGUMENTS
arg1,arg2 ... EJSON-able Object 可选方法参数
参数必须是JSON。片刻对象不是JSON。这就是为什么传递一个id,就像你做的那样,但是你的完整JS对象没有。
答案 1 :(得分:0)
是在observechanges内部调用该方法吗? 我有一个类似的问题:
let a = MyCollection.find({something:'something'});
a.observeChanges ({
changed( id, fields) {
console.log('Im here');
Meteor.call ('awesomeMethod',
'param',
(error, ans) => {
handel error; return; }
console.log(ans);
}
);
}
});
同样的事情正在发生;只有模拟正在运行,但是从控制台调用该方法效果很好,所以我决定将Meteor调用更改为另一个位置。