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でキャッチされなかったエラーのデフォルトのハンドラーとして使用されます。つまり、すべてのリクエスト処理コードでエラーがスローされた場合に自動的に呼び出されますが、イベントループの最初のステップ内でのみ呼び出されます。非同期コードからのコールバック/プロミスで発生する可能性のあるエラーは、常に明示的に処理する必要があります。