Mongoose如何添加一个方法来模拟每次更新或创build文档时执行的模式?

我有一个mongoose模式,其结构有点像这样 –

var SaleSchema = new Schema({ name: String, creation_datetime: {type: Date, default: Date.now}, account_from: {type: Schema.ObjectId, ref:'Account'}, account_to: {type: Schema.ObjectId, ref:'Account'}, transaction: { items: [{ ref: { type: Schema.ObjectId, ref:'Item' }, name: { type: String }, quantity: { type: Number }, cost: { type: Number }, discount: { type: Number }, pricePerUnit: { type: Number } }], name: String }, paid: {type:Number, default: 0}, total: {type:Number, default: 0} }); module.exports = mongoose.model('Sale', SaleSchema); 

所以,我想要做的是每次保存或编辑项目数组中的每个项目的总成本和成本。 我可以在控制器函数中做到这一点,但是我不想在这个函数中增加额外的复杂性,所以有什么办法可以附加一个可以为我做的预处理方法吗?

你可以像下面一样使用并更新你的文件:

 SaleSchema.pre('save', function(next) { // do stuff next(); }); 

资料来源: http : //mongoosejs.com/docs/api.html#schema_Schema-pre