You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							164 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
	
	
							164 lines
						
					
					
						
							3.5 KiB
						
					
					
				| '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; |