Extend Mongoose 4+ population with virtual attributes that can be populated in either direction.
npm install mongoose-populate-virtuals 
> Extend Mongoose 4+ population
> with virtual attributes
> that can be populated in either direction.
Wrap mongoose:
``javascript`
var mongoose = require('mongoose-populate-virtuals')(require('mongoose'));
Create document references to populate by defining
virtual attributes with
ref, localKey and foreignKey options.
`javascript
Author.virtual('books', {
ref: 'Book',
foreignKey: 'authorId',
localKey: '_id'
});
Author.find().populate('books').exec(...);
`
Remember virtual attributes
are not persisted to the DB. Virtuals are not included in the model's
.toObject()
or .toJSON() methods unless the options include { virtuals: true }.
Options for populate virtuals:
- ref Name of the mongoose model (required).foreignKey
- Key on the model of the populated virtual (required).localKey
- Key on the model being populated (required).match
- Query used for find() or fineOne.options
- Mongo options such as sort and limit.select
- Mongoose's .select() argument.singular` Use singular reference instead of array.
-