Meteor方法未在服务器

时间:2017-01-18 01:36:47

标签: javascript meteor

我有以下代码,

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一样,但该方法不会运行服务器端。我的实际数据库永远不会更新。

谢谢!

2 个答案:

答案 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调用更改为另一个位置。