Handle Common Mongoose Errors
Mongoose and MongoDB can produce several common errors.
Examples:
- ValidationError: Schema validation failed.
- CastError: A value cannot be cast to the expected type.
- MongoServerError code 11000: Duplicate key error.
These errors should be translated into meaningful API responses.
For example, a duplicate email should return HTTP 409 instead of exposing a raw database error.
Extend Error Middleware
export function errorHandler(error, req, res, next) {
console.error(error);
if (res.headersSent) return next(error);
let statusCode = error.statusCode || 500;
let message = error.message || 'Internal server error';
if (error.code === 11000) {
statusCode = 409;
message = 'A record with this value already exists';
} else if (error.name === 'ValidationError') {
statusCode = 400;
message = 'Database validation failed';
} else if (error.name === 'CastError') {
statusCode = 400;
message = 'Invalid resource identifier';
}
res.status(statusCode).json({
success: false,
message
});
}Translates common database errors into safe and meaningful HTTP responses.
Key Takeaways
MongoDB duplicate key errors use code 11000.
Mongoose validation errors should be handled explicitly.
Convert internal database failures into safe API responses.