私は+ node.jsを新しく表現しているので、残りのapiはmongooseを使って書かれています。どのようなデータベースエラーなどのランタイムエラーを処理する最善の方法は?Expressアプリケーションでランタイムエラーを処理するにはどうすればよいですか?
私はこのエラーを処理するためにミドルウェアfunction(err, res, req, next)
を持つことができ、この関数はnext(err)
を呼び出すことしかできないことをエクスプレスドキュメントで読みました。
const find = (email, password) => {
User.find({ email: email }, (err, doc) => {
if (err) {
// handle error
}
return doc;
});
};
その後、あなたは別のファイルにルートのハンドラを持っている:
router.get('/users', (req, res) => {
userController.find(req.body.email);
});
だから、でそれはあなたがUser
moongoseモデルを持っており、コントローラにこの関数を書く想像し、大丈夫ですこの点では、モデルにthrow(err)
と書いているmongoエラーを処理し、コントローラー内のtry/catch
を使用してnext(err)
を呼び出すことはできますか?しかし、私はJavaScriptでtry/catch
を使用することは新しい実行コンテキストなどを作成するため、良い方法ではないことをお読みになりました。
Expressでこのエラーを処理する最も良い方法は何ですか?
'てみてください/ catch'文を使うことには何も問題はありません。個人的には、エラーハンドリングのために '.catch'を使うことができるように、' Promises'を作成するアプローチに行きます。 –