私はマングースのドキュメントで、私が望むエラーを一般的に処理できることを発見しました。だからあなたは次のようにすることができます:
Product.on('error', handleError);
handleError
しかし、このメソッドのシグネチャは何ですか? 私はこのようなものが欲しい:
handleError = (err) ->
if err
console.log err
throw err
しかし、これはうまくいきません。
私はマングースのドキュメントで、私が望むエラーを一般的に処理できることを発見しました。だからあなたは次のようにすることができます:
Product.on('error', handleError);
handleError
しかし、このメソッドのシグネチャは何ですか? 私はこのようなものが欲しい:
handleError = (err) ->
if err
console.log err
throw err
しかし、これはうまくいきません。
Node では、error
イベントが 1 つの引数 (エラー自体) を提供するのが標準です。私の経験では、追加のパラメーターを提供するいくつかのライブラリでさえ、常に最初にエラーを残すため、署名付きの関数を使用できますfunction(err)
。
GitHub でソースをチェックアウトすることもできます。error
これは、何かがうまくいかないときに、エラーを引数としてイベントを発行する事前保存フックです: https://github.com/LearnBoost/mongoose/blob/cd8e0ab/lib/document.js#L1140
JavaScript には、関数に渡されたすべての引数を確認する非常に簡単な方法もあります。
f = ->
console.log(arguments)
f() # {}
f(1, "two", {num: 3}) # { '0': 1, '1': 'two', '2': { num: 3 } }
f([1, "two", {num: 3}]) # { '0': [ 1, 'two', { num: 3 } ] }
それでは、関数が機能していない部分に進みます。あなたのコードはどのように正確に読み取られますか? 名前handleError
は決して特別なものではありません。次の 2 つのいずれかが必要です。
オプション 1 : 関数を定義し、参照をイベント登録に渡します。
handleError = (err) ->
console.log "Got an error", err
Product.on('error', handleError)
オプション 2 : 関数をインラインで定義します。
Product.on 'error', (err) ->
console.log "Got an error", err