2013-03-19 7 views

答えて

6

this.errorは、パブリッシュメソッド内でのみ使用できます。 the docsあたり:

停止このクライアントのサブスクリプションがあれば、Meteor.subscribeに渡さonErrorコールバックにクライアントのコールをトリガします。エラーがMeteor.Errorでない場合、Meteor.Error(500, "Internal server error")にマップされます。

Meteor.Errorを投げても、クライアントのサブスクリプションは停止しません。実行を終了して例外を発生させます。したがって、Meteorがあなたの後をきれいにして、予期せぬことが起こったときにクライアント上でエラーを処理できるようにするには、パブリッシュメソッドの中に自分自身を投げるのではなくthis.errorを使うことをお勧めします。

2

彼らは同じようです。ソースコードでは:

try { 
    var res = self._handler.apply(self, EJSON.clone(self._params)); 
} catch (e) { 
    self.error(e); 
    return; 
} 

だから、スローされた例外がある場合は、errorはとにかくと呼ばれています。 errorはサブスクリプションも停止します。

関連する問題