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