How do I handle Mongoose validation errors?
Catch the ValidationError thrown by .save(). It has an errors object keyed by field. Return 400 with the field list. Example: if (err.name === 'ValidationError') return res.status(400).json({ errors: Object.keys(err.errors) });
Verify This Answer
Cross-check this information using these trusted sources:
More FAQs in Mongoose Validation and Custom Validators Explained
required, min, max (for numbers), minlength, maxlength (for strings), enum (value must be in the list), and match (value must match a regex). Use them at the schema level to prevent bad data at write time.
On .save() and Model.create() by default. It does not run on findByIdAndUpdate, updateOne, or updateMany unless you pass { runValidators: true }. Always pass this option when updating through these methods.
Use the validate property with a validator function and a message. The function returns true or false (or a promise). The message can be a string or a function that receives props. Example: validate: { validator: v => /^\+?\d{10,15}$/.test(v), message: 'Invalid phone' }.
Still have questions?
Browse all our FAQs or reach out to our support team
