/*! * Module requirements */ var MongooseError = require('../error.js'); /** * Document Validation Error * * @api private * @param {Document} instance * @inherits MongooseError */ function ValidationError(instance) { this.errors = {}; if (instance && instance.constructor.name === 'model') { MongooseError.call(this, instance.constructor.modelName + ' validation failed'); } else { MongooseError.call(this, 'Validation failed'); } if (Error.captureStackTrace) { Error.captureStackTrace(this); } else { this.stack = new Error().stack; } this.name = 'ValidationError'; if (instance) { instance.errors = this.errors; } } /*! * Inherits from MongooseError. */ ValidationError.prototype = Object.create(MongooseError.prototype); ValidationError.prototype.constructor = MongooseError; /** * Console.log helper */ ValidationError.prototype.toString = function() { var ret = this.name + ': '; var msgs = []; Object.keys(this.errors || {}).forEach(function(key) { if (this === this.errors[key]) { return; } msgs.push(String(this.errors[key])); }, this); return ret + msgs.join(', '); }; /*! * Module exports */ module.exports = exports = ValidationError;