Automattic/mongoose · error · MongooseError
Model.validate() no longer accepts a callback
Error message
Model.validate() no longer accepts a callback
What it means
Error "Model.validate() no longer accepts a callback" thrown in Automattic/mongoose.
Source
Thrown at lib/model.js:4302
* // The following will still throw an error because the value of `age` cannot be
* // casted to a number. Remove the `age` property before calling `validate()`.
* await Model.validate({ name: 'Test', age: 'not a number' }, ['name']);
*
* @param {object} obj
* @param {object|Array|string} pathsOrOptions
* @param {object} [context]
* @return {Promise<object>} casted and validated copy of `obj` if validation succeeded
* @api public
*/
Model.validate = async function validate(obj, pathsOrOptions, context) {
if ((arguments.length < 3) || (arguments.length === 3 && typeof arguments[2] === 'function')) {
// For convenience, if we're validating a document or an object, make `context` default to
// the model so users don't have to always pass `context`, re: gh-10132, gh-10346
context = obj;
}
if (typeof context === 'function' || typeof arguments[3] === 'function') {
throw new MongooseError('Model.validate() no longer accepts a callback');
}
let schema = this.schema;
const discriminatorKey = schema.options.discriminatorKey;
if (schema.discriminators != null && obj != null && obj[discriminatorKey] != null) {
schema = getSchemaDiscriminatorByValue(schema, obj[discriminatorKey]) || schema;
}
let paths = Object.keys(schema.paths);
if (pathsOrOptions != null) {
const _pathsToValidate = typeof pathsOrOptions === 'string' ? new Set(pathsOrOptions.split(' ')) : Array.isArray(pathsOrOptions) ? new Set(pathsOrOptions) : new Set(paths);
paths = paths.filter(p => {
if (pathsOrOptions.pathsToSkip) {
if (Array.isArray(pathsOrOptions.pathsToSkip)) {
if (pathsOrOptions.pathsToSkip.find(x => x == p)) {
return false;
}
} else if (typeof pathsOrOptions.pathsToSkip == 'string') {View on GitHub (pinned to 49cdab0136)
When it happens
Trigger: Thrown at lib/model.js:4302 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Automattic/mongoose@49cdab0136 (2026-08-21).
Data as JSON: /api/errors/bb942a461b75c66f.
Report an issue: GitHub.