skip to Main Content

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?

2

Answers


  1. Chosen as BEST ANSWER

    The maintainer of Mongoose answered this question here

    mySchema.path('password').doValidate(value, fn). Or you can do doc.validate(['password']).


  2. 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);
                }
            }
        }
    })
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search