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 .