常にMongooseスキーマに特定のフィールドpopulate()
ここでドキュメントを読んでください。
注:人口は強力な機能ですが、制限があり、スキーマの設計が悪いことで逃げるのに役立ちます。特に、通常、ドキュメントに縛られずに成長するアレイを含めることは通常、悪いMongodbスキーマ設計です。スキーマに絶えず成長しているオブジェクトインドの配列を含めないでください - 配列が成長するにつれてデータが扱いにくくなり、最終的には16 MBのドキュメントサイズの制限に達します。一般的に、スキーマを設計する際には慎重に考えてください。
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' ) ) ;