Home > Software engineering >  Skip validation for one field, not all the schema
Skip validation for one field, not all the schema

Time:07-03

I have the following long schema:

const mySchema = new mongoose.Schema({
  // some stuff, email, lastName ... etc
  firstName: {
    type: String,
    required: true,
  }
  password: {
    type: String,
    minLength: 8,
    maxLength: 120,
  }
})

And I am inside one of the routes, I want to save a document that I am editing, but I only want to skip one validation, not the entire schema, I want to skip the validation for the firstName field, but I want the rest of the fields to be validated.

Is there something that I can do in Mongoose such as:

userDoc.firstName = "new first name";
const newDoc = await userDoc.save({ validateBeforeSave: yes, but not for firstName })

Is there something like that?

CodePudding user response:

The maintainer of Mongoose answered this question here

Yeah, check out the pathsToSkip option for validate: https://mongoosejs.com/docs/api/document.html#document_Document-validate

CodePudding user response:

According to Mongoose documentation, there is a method called $ignore:

Don't run validation on this path or persist changes to this path.

Example:

doc.foo = null;
doc.$ignore('foo');
doc.save(); // changes to foo will not be persisted and validators won't be run
  • Related