Mongoose.js:强制总是填充

WHI*_*LOR 22 javascript mongoose mongodb node.js

有没有办法指示模型总是填充某个字段?

有点像,在任何查询查询中填充"字段":

{field: Schema.ObjectId, ref: 'Ref', populate: true}
Run Code Online (Sandbox Code Playgroud)

小智 32

使用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 });
Run Code Online (Sandbox Code Playgroud)

查询挂钩自动填充:

var autoPopulateLead = function(next) {
  this.populate('lead');
  next();
};

bandSchema.
  pre('findOne', autoPopulateLead).
  pre('find', autoPopulateLead);

var Band = mongoose.model('band', bandSchema, 'bands');
Run Code Online (Sandbox Code Playgroud)