I have the following long schema:
const mySchema = new mongoose.Schema({
// some stuff, firstName, lastName ... etc
password: {
type: String,
minLength: 8,
maxLength: 120,
}
})
And I am inside one of the routes, I want to run validation on the password filed only. Is there something that I can do in Mongoose such as:
mySchema.fields.password.validate("123") // Error: password is less than 8 characters!
Is there something like that?
CodePudding user response:
The maintainer of Mongoose answered this question here
mySchema.path('password').doValidate(value, fn). Or you can do doc.validate(['password']).
CodePudding user response:
Use mongoose Custom Validators https://mongoosejs.com/docs/validation.html#custom-validators
Example -
const mySchema = new mongoose.Schema({
// some stuff, firstName, lastName ... etc
password: {
type: String,
minLength: 8,
maxLength: 120,
validate: {
validator: function (v) {
//do something, return false if something wrong
return /^[A-Za-z0-9_] $/.test(v);
}
}
}
})