Řekl bych, že tudy vede cesta. před middleware přesně odpovídá této potřebě a neznám jiný způsob. Ve skutečnosti to je to, co dělám ve všech mých schématech.
Co si však musíte uvědomit, je rozdíl mezi dokumentem a dotaz middleware.Dokument middleware se spouští pro init
, validate
, save
a remove
operace. Tady, this
odkazuje na dokument:
schema.pre('save', function(next) {
this.increment();
return next();
});
Dotaz middleware se spouští pro count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
a update
operace. Tady, this
odkazuje na objekt dotazu. Aktualizace pole verze pro takové operace by vypadala takto:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Zdroj:dokumentace mongoose .