Spaces:
Runtime error
Runtime error
| /*! | |
| * Module dependencies. | |
| */ | |
| ; | |
| const MongooseError = require('../error/mongooseError'); | |
| const SchemaType = require('../schemaType'); | |
| const SchemaSubdocument = require('./subdocument'); | |
| const getConstructor = require('../helpers/discriminator/getConstructor'); | |
| /** | |
| * DocumentArrayElement SchemaType constructor. | |
| * | |
| * @param {String} path | |
| * @param {Object} options | |
| * @inherits SchemaType | |
| * @api public | |
| */ | |
| function SchemaDocumentArrayElement(path, options) { | |
| this.$parentSchemaType = options && options.$parentSchemaType; | |
| if (!this.$parentSchemaType) { | |
| throw new MongooseError('Cannot create DocumentArrayElement schematype without a parent'); | |
| } | |
| delete options.$parentSchemaType; | |
| SchemaType.call(this, path, options, 'DocumentArrayElement'); | |
| this.$isMongooseDocumentArrayElement = true; | |
| } | |
| /** | |
| * This schema type's name, to defend against minifiers that mangle | |
| * function names. | |
| * | |
| * @api public | |
| */ | |
| SchemaDocumentArrayElement.schemaName = 'DocumentArrayElement'; | |
| SchemaDocumentArrayElement.defaultOptions = {}; | |
| /*! | |
| * Inherits from SchemaType. | |
| */ | |
| SchemaDocumentArrayElement.prototype = Object.create(SchemaType.prototype); | |
| SchemaDocumentArrayElement.prototype.constructor = SchemaDocumentArrayElement; | |
| /** | |
| * Casts `val` for DocumentArrayElement. | |
| * | |
| * @param {Object} value to cast | |
| * @api private | |
| */ | |
| SchemaDocumentArrayElement.prototype.cast = function(...args) { | |
| return this.$parentSchemaType.cast(...args)[0]; | |
| }; | |
| /** | |
| * Casts contents for queries. | |
| * | |
| * @param {String} $cond | |
| * @param {any} [val] | |
| * @api private | |
| */ | |
| SchemaDocumentArrayElement.prototype.doValidate = function(value, fn, scope, options) { | |
| const Constructor = getConstructor(this.caster, value); | |
| if (value && !(value instanceof Constructor)) { | |
| value = new Constructor(value, scope, null, null, options && options.index != null ? options.index : null); | |
| } | |
| return SchemaSubdocument.prototype.doValidate.call(this, value, fn, scope, options); | |
| }; | |
| /** | |
| * Clone the current SchemaType | |
| * | |
| * @return {DocumentArrayElement} The cloned instance | |
| * @api private | |
| */ | |
| SchemaDocumentArrayElement.prototype.clone = function() { | |
| this.options.$parentSchemaType = this.$parentSchemaType; | |
| const ret = SchemaType.prototype.clone.apply(this, arguments); | |
| delete this.options.$parentSchemaType; | |
| ret.caster = this.caster; | |
| ret.schema = this.schema; | |
| return ret; | |
| }; | |
| /*! | |
| * Module exports. | |
| */ | |
| module.exports = SchemaDocumentArrayElement; | |