123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- 'use strict';
- const opts = require('./propertyOptions');
- class VirtualOptions {
- constructor(obj) {
- Object.assign(this, obj);
- if (obj != null && obj.options != null) {
- this.options = Object.assign({}, obj.options);
- }
- }
- }
- /**
- * Marks this virtual as a populate virtual, and specifies the model to
- * use for populate.
- *
- * @api public
- * @property ref
- * @memberOf VirtualOptions
- * @type String|Model|Function
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'ref', opts);
- /**
- * Marks this virtual as a populate virtual, and specifies the path that
- * contains the name of the model to populate
- *
- * @api public
- * @property refPath
- * @memberOf VirtualOptions
- * @type String|Function
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'refPath', opts);
- /**
- * The name of the property in the local model to match to `foreignField`
- * in the foreign model.
- *
- * @api public
- * @property localField
- * @memberOf VirtualOptions
- * @type String|Function
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'localField', opts);
- /**
- * The name of the property in the foreign model to match to `localField`
- * in the local model.
- *
- * @api public
- * @property foreignField
- * @memberOf VirtualOptions
- * @type String|Function
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'foreignField', opts);
- /**
- * Whether to populate this virtual as a single document (true) or an
- * array of documents (false).
- *
- * @api public
- * @property justOne
- * @memberOf VirtualOptions
- * @type Boolean
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'justOne', opts);
- /**
- * If true, populate just the number of documents where `localField`
- * matches `foreignField`, as opposed to the documents themselves.
- *
- * If `count` is set, it overrides `justOne`.
- *
- * @api public
- * @property count
- * @memberOf VirtualOptions
- * @type Boolean
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'count', opts);
- /**
- * Add an additional filter to populate, in addition to `localField`
- * matches `foreignField`.
- *
- * @api public
- * @property match
- * @memberOf VirtualOptions
- * @type Object|Function
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'match', opts);
- /**
- * Additional options to pass to the query used to `populate()`:
- *
- * - `sort`
- * - `skip`
- * - `limit`
- *
- * @api public
- * @property options
- * @memberOf VirtualOptions
- * @type Object
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'options', opts);
- /**
- * If true, add a `skip` to the query used to `populate()`.
- *
- * @api public
- * @property skip
- * @memberOf VirtualOptions
- * @type Number
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'skip', opts);
- /**
- * If true, add a `limit` to the query used to `populate()`.
- *
- * @api public
- * @property limit
- * @memberOf VirtualOptions
- * @type Number
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'limit', opts);
- /**
- * The `limit` option for `populate()` has [some unfortunate edge cases](/docs/populate.html#query-conditions)
- * when working with multiple documents, like `.find().populate()`. The
- * `perDocumentLimit` option makes `populate()` execute a separate query
- * for each document returned from `find()` to ensure each document
- * gets up to `perDocumentLimit` populated docs if possible.
- *
- * @api public
- * @property perDocumentLimit
- * @memberOf VirtualOptions
- * @type Number
- * @instance
- */
- Object.defineProperty(VirtualOptions.prototype, 'perDocumentLimit', opts);
- module.exports = VirtualOptions;
|