En mongoose.model , he elegido que el tipo de name sea una string y el tipo de age sea un number , pero cuando ingreso un número como valor de nombre, no me da error y sucede lo mismo cuando uso algo como '18' como el valor de la edad.
Aquí está el código:
const User = mongoose.model('User', { name: { type: String }, age: { type: Number } }); const me = new User({ name: 12, age: '18' }); me.save().then(() => console.log(me)).catch(error => console.log(error));Mongoose convierte los valores al tipo correspondiente, si falla, se lanza un CastError , desde el documento :
Antes de ejecutar los validadores, Mongoose intenta forzar los valores al tipo correcto. Este proceso se denomina conversión del documento. Si la conversión falla para una ruta determinada, el objeto
error.errorscontendrá un objetoCastError.
Puede probar esto por age dada el valor 'aa' por ejemplo.
Si desea anular este comportamiento, puede utilizar una de las siguientes opciones:
mongoose.Number.cast(false) age: { type: Number, cast: false // Disable casting just for this path }, age: { type: Number, cast: v => { return typeof v === 'number' && !isNaN(v) ? Number(v) : v; } // Override casting just for this path }