Skip to content

mongodb-js/mongoose-autopopulate

Folders and files

NameName
Last commit message
Last commit date
Nov 1, 2023
May 5, 2023
Sep 6, 2021
Nov 8, 2018
May 10, 2018
Mar 29, 2020
Oct 24, 2023
Feb 24, 2015
Feb 26, 2015
Feb 24, 2023
Nov 22, 2019
May 14, 2021
Oct 7, 2018
Sep 19, 2021
May 5, 2023
Nov 1, 2023

Repository files navigation

mongoose-autopopulate

Always populate() certain fields in your mongoose schemas

Build Status Coverage Status

Read the docs here.

Note: population is a powerful feature, but it has limitations and helps you get away with poor schema design. In particular, it is usually bad MongoDB schema design to include arrays that grow without bound in your documents. Do not include a constantly-growing array of ObjectIds in your schema - your data will become unwieldy as the array grows and you will eventually hit the 16 MB document size limit. In general, think carefully when designing your schemas.

Usage

The mongoose-autopopulate module exposes a single function that you can pass to Mongoose schema's plugin() function.

const schema = new mongoose.Schema({
  populatedField: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'ForeignModel',
    // The below option tells this plugin to always call `populate()` on
    // `populatedField`
    autopopulate: true
  }
});
schema.plugin(require('mongoose-autopopulate'));

Only apply this plugin to top-level schemas. Don't apply this plugin to child schemas.

// Don't do `nestedSchema.plugin(require('mongoose-autopopulate'))`.
// You only need to add mongoose-autopopulate to top-level schemas.
const nestedSchema = mongoose.Schema({
  child: { type: Number, ref: 'Child', autopopulate: true }
});
const topSchema = mongoose.Schema({ nested: nestedSchema });
topSchema.plugin(require('mongoose-autopopulate'));