Mongoose.js:强制总是填充

有没有办法指导模型永远填充某个领域?

就像在任何find查询中填充“field”一样:

{field: Schema.ObjectId, ref: 'Ref', populate: true} 

随着Mongoose 4.0,你可以使用查询钩为了自动填充任何你想要的。

下面的例子来自Valeri Karpov的介绍文件 。

模式的定义:

 var personSchema = new mongoose.Schema({ name: String }); var bandSchema = new mongoose.Schema({ name: String, lead: { type: mongoose.Schema.Types.ObjectId, ref: 'person' } }); var Person = mongoose.model('person', personSchema, 'people'); var Band = mongoose.model('band', bandSchema, 'bands'); var axl = new Person({ name: 'Axl Rose' }); var gnr = new Band({ name: "Guns N' Roses", lead: axl._id }); 

查询挂钩autopopulate:

 var autoPopulateLead = function(next) { this.populate('lead'); next(); }; bandSchema. pre('findOne', autoPopulateLead). pre('find', autoPopulateLead); var Band = mongoose.model('band', bandSchema, 'bands'); 

这个插件是你的问题的解决scheme:

https://www.npmjs.com/package/mongoose-autopopulate