Manejo de errores de validación de mangosta: ¿dónde y cómo?

Estoy tratando de decidir cómo quiero manejar los errores de validación en Mongoose.

Mensajes de error personalizados usando el validador de nodos

He definido mis propias reglas de validación usandovalidador de nodos, por ejemplo:

UserSchema.path('username')
  .validate(function (username) {
    return validator.check(username).notEmpty()
  }, 'Username cannot be blank')

Que generará un error que se ve así:

  username: 
   { message: 'Validator "Username cannot be blank" failed for path username',
     name: 'ValidatorError',
     path: 'username',
     type: 'Username cannot be blank' },
Uso de validador de mangosta

Sin embargo, el validador de nodos proporciona sus propios mensajes de error. Si uso elvalidador de mangosta El módulo de nodo para conectar el validador de nodo directamente en mi esquema, entonces puedo usar estos mensajes de error directamente en su lugar:

var UserSchema = new Schema({
  name: { type: String, validate: [validate('notEmpty')] }
});

Que generará un mensaje de error que se parece a:

  name: 
   { message: 'Validator "String is empty" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'String is empty' } }

También puedo proporcionar un mensaje de error personalizado aquí también:

var UserSchema = new Schema({
  name: { type: String, validate: [validate({message: 'Name cannot be blank' }, 'notEmpty')] }
});
Mangostarequired bandera

Mongoose le permite definir un campo como se requiere:

var UserSchema = new Schema({
  name: { type: String, required: true }
});

Que generará un mensaje de error que se parece a:

  name: 
   { message: 'Validator "required" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'required' } }
La pregunta

Se siente como si estos validadoresquerer para utilizar sus mensajes de error incorporados. Por ejemplo, quiero declarar un campo comorequired como se vio anteriormente, pero no puedo encontrar una manera de personalizar el mensaje de error. Y el módulo validador de mangosta no admitía mensajes personalizados hasta hace muy poco, lo que me hace pensar que son un antipatrón en el nivel del modelo.

¿Cuál es la mejor manera de implementar estos validadores? ¿Debo dejar que generen sus propios errores y luego interpretarlos de alguna manera?

Respuestas a la pregunta(7)

Su respuesta a la pregunta