Direi che questa è la strada da percorrere. pre il middleware si adatta esattamente a questa esigenza e non conosco nessun altro modo. In effetti questo è ciò che sto facendo in tutti i miei schemi.
Quello di cui devi essere consapevole, però, è la differenza tra document e interroga middleware.Documento il middleware viene eseguito per init , validate , save e remove operazioni. Ecco, this fa riferimento al documento:
schema.pre('save', function(next) {
this.increment();
return next();
});
Interroga il middleware viene eseguito per count , find , findOne , findOneAndRemove , findOneAndUpdate e update operazioni. Ecco, this fa riferimento all'oggetto della query. L'aggiornamento del campo della versione per tali operazioni sarebbe simile al seguente:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Fonte:documentazione di mangusta .