- エラーハンドリングミドルウェアの設定:
Expressアプリケーションで未処理のルートエラーをキャプチャするために、エラーハンドリングミドルウェアを設定します。以下のコードは、Expressの
app.js
ファイル内に追加する例です。
app.use((req, res, next) => {
const error = new Error('Not Found');
error.status = 404;
next(error);
});
app.use((error, req, res, next) => {
res.status(error.status || 500);
res.json({
error: {
message: error.message
}
});
});
- Mongooseのルートエラーハンドリング: Mongooseの未処理のルートエラーをキャプチャするためには、Mongooseスキーマのバリデーションエラーをキャッチする必要があります。以下のコードは、Mongooseスキーマ内でのエラーハンドリングの例です。
const mongoose = require('mongoose');
const schema = new mongoose.Schema({
// スキーマ定義
});
const Model = mongoose.model('Model', schema);
Model.create({}, (error, doc) => {
if (error) {
if (error.name === 'ValidationError') {
// バリデーションエラーの処理
} else {
// その他のエラーの処理
}
}
});
- 追加のエラーハンドリング: カスタムルートやその他のライブラリを使用している場合、それらのエラーハンドリング方法も確認する必要があります。各ライブラリのドキュメントや公式リファレンスを参照し、適切なエラーハンドリング手法を実装してください。
上記の手順とコード例を使用することで、MongooseとExpressで未処理のルートを処理する方法を簡単かつ効果的に実装することができます。