Eu diria que esse é o caminho. pré middleware se encaixa exatamente nessa necessidade, e não conheço outra forma. Na verdade, isso é o que estou fazendo em todos os meus esquemas.
O que você precisa estar ciente, porém, é a diferença entre document e consultar middleware.Documento middleware são executados para
init
, validate
, save
e remove
operações. Lá, this
refere-se ao documento:schema.pre('save', function(next) {
this.increment();
return next();
});
Consulta middleware são executados para
count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
e update
operações. Lá, this
refere-se ao objeto de consulta. A atualização do campo de versão para tais operações ficaria assim:schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Fonte:documentação do mangusto .