res.negotiate()
このメソッドは非推奨です.
代わりにカスタムレスポンスを使用する必要があります。
Waterlineモデルメソッドからのエラーを処理するには、エラーの
name
プロパティを確認してください(詳細については、Waterlineエラーリファレンスを参照してください)。
エラー(err
)が与えられた場合、status
プロパティを調べることで、どのエラーレスポンス(badRequest
、forbidden
、notFound
、またはserverError
)を呼び出すべきかを推測しようとします。err
が辞書型でない場合、またはstatus
プロパティが既知のHTTPステータスコードと一致しない場合は、デフォルトでserverError
になります。
特に、Model.create()やModel.update()からの潜在的なバリデーションエラーを処理するのに役立ちます。
return res.negotiate(err);
他の組み込みのカスタムレスポンスモジュールと同様に、このメソッドの動作はカスタマイズ可能です。
res.negotiate()
は、提供されたエラー(err
)を調べ、次のいずれかのメソッドから適切なエラー処理動作を決定します。
res.badRequest()
(400)res.forbidden()
(403)res.notFound()
(404)res.serverError()
(500)この決定は、err
の「status」プロパティに基づいて行われます。より具体的な診断ができない場合(例:err
に「status」プロパティがない、または文字列である場合)、Sailsはデフォルトでres.serverError()
を使用します。
// Add Fido's birthday to the database:
Pet.update({name: 'fido'})
.set({birthday: new Date('01/01/2010')})
.exec(function (err, fido) {
if (err) return res.negotiate(err);
return res.ok(fido);
});
- このメソッドはターミナルです。つまり、通常、特定の要求に対してアプリが実行するコードの最後の行です(したがって、これらのドキュメント全体で
return
の使用が推奨されています)。res.negotiate()
(他のユーザランドレスポンスメソッドと同様に)はオーバーライドできます。レスポンスモジュール(/responses/negotiate.js
)を定義し、関数の定義をエクスポートするだけです。- このメソッドは、Sailsでキャッチされなかったエラーのデフォルトのハンドラーとして使用されます。つまり、すべてのリクエスト処理コードでエラーがスローされた場合に自動的に呼び出されますが、イベントループの最初のステップ内でのみ呼び出されます。非同期コードからのコールバック/プロミスで発生する可能性のあるエラーは、常に明示的に処理する必要があります。