Ik zou zeggen dat dit de manier is om te gaan. voor middleware past precies in deze behoefte, en ik weet niet anders. In feite is dit wat ik doe in al mijn schema's.
Waar u echter op moet letten, is het verschil tussen document en query middleware.Document middleware worden uitgevoerd voor init
, validate
, save
en remove
activiteiten. Daar, this
verwijst naar het document:
schema.pre('save', function(next) {
this.increment();
return next();
});
Zoekopdracht middleware wordt uitgevoerd voor count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
en update
activiteiten. Daar, this
verwijst naar het query-object. Het bijwerken van het versieveld voor dergelijke bewerkingen ziet er als volgt uit:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Bron:documentatie over mangoesten .