无法捕获来自Event的Method中抛出的流星错误

时间:2015-05-13 01:51:18

标签: meteor

我有一个方法,它会抛出一个错误,所以我可以在我的事件中捕获它并将其显示给用户,如下所示:

  Meteor.methods({
    addPlayer: function(nickname) {
      if (nickname == "") {
        throw new Meteor.Error('empty-nickname', 'You must choose a nickname');
      } else {
        Player.insert({
          nickname: nickname,
        });
      }
    },
  })

在我的活动中

'submit form': function (e) {
  e.preventDefault();

  var nickname = $('input').val();

  Meteor.call('addPlayer', nickname, function(error, result) {
    if (error) {
      console.log(typeof error);
      console.log(error);
    }
  });
}

然而,meteor在模拟调用'addPlayer'的效果时仍会抛出异常,并且错误变量不是错误对象,而是与控制台日志具有相同消息的字符串,因此我在控制台中出现两个错误而不是错误对象。

在try / catch中包装method.call不起作用。

我在这里缺少什么?

- 编辑 这是结果的打印屏幕: Console print screen

全分辨率的图片链接:http://i.stack.imgur.com/zABar.png

1 个答案:

答案 0 :(得分:1)

仅在服务器上抛出错误。将其包裹在if(!this.isSimulation) {}

Meteor.methods({
  addPlayer: function(nickname) {
    if (nickname == "") {
      if(!this.isSimulation) {
        throw new Meteor.Error('empty-nickname', 'You must choose a nickname');
      }
    } else {
      Player.insert({
        nickname: nickname,
      });
    }
  },
})