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.