Всегда populate()
определенные поля в ваших схемах мангуоза
Прочитайте документы здесь.
Примечание: популяция является мощной особенностью, но у нее есть ограничения и помогает вам уйти с плохой дизайн схемы. В частности, обычно это плохой дизайн схемы MongoDB, включающий массивы, которые растут без связанных в ваши документы. Не включайте в свою схему постоянно растущий массив Objectids - ваши данные станут громоздкими по мере роста массива, и вы в конечном итоге нажмете ограничение размера документа 16 МБ. В целом, внимательно подумайте при разработке ваших схем.
Модуль mongoose-autopopulate
выявляет одну функцию, которую вы можете передать в функцию Mongoose Schema plugin()
.
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' ) ) ;
Примените только этот плагин к схемам верхнего уровня. Не применяйте этот плагин к детским схемам.
// 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' ) ) ;