deno.land / x / mongoose@6.7.5 / lib / options / SchemaTypeOptions.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245'use strict';
const clone = require('../helpers/clone');
/** * The options defined on a schematype. * * #### Example: * * const schema = new Schema({ name: String }); * schema.path('name').options instanceof mongoose.SchemaTypeOptions; // true * * @api public * @constructor SchemaTypeOptions */
class SchemaTypeOptions { constructor(obj) { if (obj == null) { return this; } Object.assign(this, clone(obj)); }}
const opts = require('./propertyOptions');
/** * The type to cast this path to. * * @api public * @property type * @memberOf SchemaTypeOptions * @type {Function|String|Object} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'type', opts);
/** * Function or object describing how to validate this schematype. * * @api public * @property validate * @memberOf SchemaTypeOptions * @type {Function|Object} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'validate', opts);
/** * Allows overriding casting logic for this individual path. If a string, the * given string overwrites Mongoose's default cast error message. * * #### Example: * * const schema = new Schema({ * num: { * type: Number, * cast: '{VALUE} is not a valid number' * } * }); * * // Throws 'CastError: "bad" is not a valid number' * schema.path('num').cast('bad'); * * const Model = mongoose.model('Test', schema); * const doc = new Model({ num: 'fail' }); * const err = doc.validateSync(); * * err.errors['num']; // 'CastError: "fail" is not a valid number' * * @api public * @property cast * @memberOf SchemaTypeOptions * @type {String} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'cast', opts);
/** * If true, attach a required validator to this path, which ensures this path * cannot be set to a nullish value. If a function, Mongoose calls the * function and only checks for nullish values if the function returns a truthy value. * * @api public * @property required * @memberOf SchemaTypeOptions * @type {Function|Boolean} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'required', opts);
/** * The default value for this path. If a function, Mongoose executes the function * and uses the return value as the default. * * @api public * @property default * @memberOf SchemaTypeOptions * @type {Function|Any} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'default', opts);
/** * The model that `populate()` should use if populating this path. * * @api public * @property ref * @memberOf SchemaTypeOptions * @type {Function|String} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'ref', opts);
/** * The path in the document that `populate()` should use to find the model * to use. * * @api public * @property ref * @memberOf SchemaTypeOptions * @type {Function|String} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'refPath', opts);
/** * Whether to include or exclude this path by default when loading documents * using `find()`, `findOne()`, etc. * * @api public * @property select * @memberOf SchemaTypeOptions * @type {Boolean|Number} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'select', opts);
/** * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will * build an index on this path when the model is compiled. * * @api public * @property index * @memberOf SchemaTypeOptions * @type {Boolean|Number|Object} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'index', opts);
/** * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose * will build a unique index on this path when the * model is compiled. [The `unique` option is **not** a validator](/docs/validation.html#the-unique-option-is-not-a-validator). * * @api public * @property unique * @memberOf SchemaTypeOptions * @type {Boolean|Number} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'unique', opts);
/** * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will * disallow changes to this path once the document * is saved to the database for the first time. Read more about [immutability in Mongoose here](https://thecodebarbarian.com/whats-new-in-mongoose-5-6-immutable-properties.html). * * @api public * @property immutable * @memberOf SchemaTypeOptions * @type {Function|Boolean} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'immutable', opts);
/** * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose will * build a sparse index on this path. * * @api public * @property sparse * @memberOf SchemaTypeOptions * @type {Boolean|Number} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'sparse', opts);
/** * If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), Mongoose * will build a text index on this path. * * @api public * @property text * @memberOf SchemaTypeOptions * @type {Boolean|Number|Object} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'text', opts);
/** * Define a transform function for this individual schema type. * Only called when calling `toJSON()` or `toObject()`. * * #### Example: * * const schema = Schema({ * myDate: { * type: Date, * transform: v => v.getFullYear() * } * }); * const Model = mongoose.model('Test', schema); * * const doc = new Model({ myDate: new Date('2019/06/01') }); * doc.myDate instanceof Date; // true * * const res = doc.toObject({ transform: true }); * res.myDate; // 2019 * * @api public * @property transform * @memberOf SchemaTypeOptions * @type {Function} * @instance */
Object.defineProperty(SchemaTypeOptions.prototype, 'transform', opts);
module.exports = SchemaTypeOptions;
Version Info