5

では、 を使用することと単に投げることMeteor.publishの違いは何ですか?this.errorMeteor.Error

4

2 に答える 2

6

this.errorpublish メソッド内でのみ使用できます。ドキュメントごと:

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

をスローしてMeteor.Errorもクライアントのサブスクリプションは停止せず、実行を終了して例外を発生させるだけです。そのため、予期しないことが起こったときに Meteor が確実にクリーンアップし、クライアントでエラーを処理できるようにしたい場合はthis.error、publish メソッド内で独自のものをスローするのではなく、使用することをお勧めします。

于 2013-03-19T22:18:20.557 に答える
3

それらは同じようです。ソースコード内:

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

したがって、例外がスローされた場合errorは、とにかく呼び出されます。errorサブスクリプションも停止します。

于 2013-03-19T22:34:16.643 に答える