VirtualType
Virtualtype
- VirtualType()
- VirtualType.prototype.applyGetters()
- VirtualType.prototype.applySetters()
- VirtualType.prototype.get()
- VirtualType.prototype.set()
- VirtualType()
- VirtualType.prototype.applyGetters()
- VirtualType.prototype.applySetters()
- VirtualType.prototype.get()
- VirtualType.prototype.set()
VirtualType()
Parameters
-
options «Object»
-
[options.ref] «string|function» if
refis not nullish, this becomes a populated virtual -
[options.localField] «string|function» the local field to populate on if this is a populated virtual.
-
[options.foreignField] «string|function» the foreign field to populate on if this is a populated virtual.
-
[options.justOne=false] «boolean» by default, a populated virtual is an array. If you set
justOne, the populated virtual will be a single doc ornull. -
[options.getters=false] «boolean» if you set this to
true, Mongoose will call any custom getters you defined on this virtual -
[options.count=false] «boolean» if you set this to
true,populate()will set this virtual to the number of populated documents, as opposed to the documents themselves, usingQuery#countDocuments() -
[options.match=null] «Object|Function» add an extra match condition to
populate() -
[options.limit=null] «Number» add a default
limitto thepopulate()query -
[options.skip=null] «Number» add a default
skipto thepopulate()query -
[options.perDocumentLimit=null] «Number» For legacy reasons,
limitwithpopulate()may give incorrect results because it only executes a single query for every document being populated. If you setperDocumentLimit, Mongoose will ensure correctlimitper document by executing a separate query for each document topopulate(). For example,.find().populate({ path: 'test', perDocumentLimit: 2 })will execute 2 additional queries if.find()returns 2 documents. -
[options.options=null] «Object» Additional options like
limitandlean.
VirtualType constructor
This is what mongoose uses to define virtual attributes via Schema.prototype.virtual.
Example:
const fullname = schema.virtual('fullname');
fullname instanceof mongoose.VirtualType // true
VirtualType.prototype.applyGetters()
Parameters
- value «Object»
- doc «Document» The document this virtual is attached to
Returns:
- «any» the value after applying all getters
Applies getters to value.
VirtualType.prototype.applySetters()
Parameters
- value «Object»
- doc «Document»
Returns:
- «any» the value after applying all setters
Applies setters to value.
VirtualType.prototype.get()
Parameters
- VirtualType, «Function(Any|» Document)} fn
Returns:
- «VirtualType» this
Adds a custom getter to this virtual.
Mongoose calls the getter function with the below 3 parameters.
value: the value returned by the previous getter. If there is only one getter,valuewill beundefined.virtual: the virtual object you called.get()ondoc: the document this virtual is attached to. Equivalent tothis.
Example:
const virtual = schema.virtual('fullname');
virtual.get(function(value, virtual, doc) {
return this.name.first + ' ' + this.name.last;
});
VirtualType.prototype.set()
Parameters
- VirtualType, «Function(Any|» Document)} fn
Returns:
- «VirtualType» this
Adds a custom setter to this virtual.
Mongoose calls the setter function with the below 3 parameters.
value: the value being setvirtual: the virtual object you‘re calling.set()ondoc: the document this virtual is attached to. Equivalent tothis.
Example:
const virtual = schema.virtual('fullname');
virtual.set(function(value, virtual, doc) {
const parts = value.split(' ');
this.name.first = parts[0];
this.name.last = parts[1];
});
const Model = mongoose.model('Test', schema);
const doc = new Model();
// Calls the setter with `value = 'Jean-Luc Picard'`
doc.fullname = 'Jean-Luc Picard';
doc.name.first; // 'Jean-Luc'
doc.name.last; // 'Picard'
