mongoose-populate-virtuals

Extend Mongoose 4+ population with virtual attributes that can be populated in either direction.

Usage no npm install needed!

<script type="module">
  import mongoosePopulateVirtuals from 'https://cdn.skypack.dev/mongoose-populate-virtuals';
</script>

README

mongoose-populate-virtuals

Build Status NPM version

Extend Mongoose 4+ population with virtual attributes that can be populated in either direction.

Usage

Wrap mongoose:

var mongoose = require('mongoose-populate-virtuals')(require('mongoose'));

Create document references to populate by defining virtual attributes with ref, localKey and foreignKey options.

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

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.