| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*!
- * Module requirements
- */
- 'use strict';
- const MongooseError = require('./mongooseError');
- const getConstructorName = require('../helpers/getConstructorName');
- const util = require('util');
- const combinePathErrors = require('../helpers/error/combinePathErrors');
- /**
- * Document Validation Error
- *
- * @api private
- * @param {Document} [instance]
- * @inherits MongooseError
- */
- class ValidationError extends MongooseError {
- constructor(instance) {
- let _message;
- if (getConstructorName(instance) === 'model') {
- _message = instance.constructor.modelName + ' validation failed';
- } else {
- _message = 'Validation failed';
- }
- super(_message);
- this.errors = {};
- this._message = _message;
- if (instance) {
- instance.$errors = this.errors;
- }
- }
- /**
- * Console.log helper
- */
- toString() {
- return this.name + ': ' + combinePathErrors(this);
- }
- /**
- * add message
- * @param {String} path
- * @param {String|Error} error
- * @api private
- */
- addError(path, error) {
- if (error instanceof ValidationError) {
- const { errors } = error;
- for (const errorPath of Object.keys(errors)) {
- this.addError(`${path}.${errorPath}`, errors[errorPath]);
- }
- return;
- }
- this.errors[path] = error;
- this.message = this._message + ': ' + combinePathErrors(this);
- }
- }
- if (util.inspect.custom) {
- // Avoid Node deprecation warning DEP0079
- ValidationError.prototype[util.inspect.custom] = ValidationError.prototype.inspect;
- }
- /**
- * Helper for JSON.stringify
- * Ensure `name` and `message` show up in toJSON output re: gh-9847
- * @api private
- */
- Object.defineProperty(ValidationError.prototype, 'toJSON', {
- enumerable: false,
- writable: false,
- configurable: true,
- value: function() {
- return Object.assign({}, this, { name: this.name, message: this.message });
- }
- });
- Object.defineProperty(ValidationError.prototype, 'name', {
- value: 'ValidationError'
- });
- /*!
- * Module exports
- */
- module.exports = ValidationError;
|