Home > Software engineering >  Mongoose validate only one path
Mongoose validate only one path

Time:07-03

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);
            }
        }
    }
})
  • Related