统一回应出版错误

时间:2015-10-30 19:57:41

标签: meteor

我们说我有一个非常简单的出版物。

Meteor.publish('players', function (guildId) {
  if (Roles.userIsInRole(this.userId, 'player', guildId)) {
    return Meteor.users.find({
      [`roles.${guildId}`]: 'player'
    });
  } else {
    this.error(new Meteor.Error(401, "Unauthorized"));
  }
});

我有一些这些。我想知道的是:我能以某种特定的方式回应我提供的代码吗?例如:

OnErrorHooks({
  400: function (err) {
    BlazeLayout.render('Error', {
      content: err.message
    });
  }
});

1 个答案:

答案 0 :(得分:0)

不确定

var hooks = {
    400: function (err) {
        BlazeLayout.render('Error', {
            content: err.message
        });
    }
}

handleErrors = function(error) {
    var handler hooks[Number(error.error)];
    if (handler) {
        handler(error);
    } else {
        console.log("no error handler defined for error", error);
    }
};

Meteor.subscribe('players', { onStop: handleErrors });
Meteor.subscribe('games', { onStop: handleErrors });
...

如果您的问题是是否有办法将{ onStop: handlerErrors }添加到每个订阅中,那么我猜不会,但当然您也可以为此编写一个便利函数:

mySubscribe = function(sub) {
    Meteor.subscribe(sub, { onStop: handleErrors });
};