Yo diría que este es el camino a seguir. pre el middleware se ajusta exactamente a esta necesidad, y no sé de otra manera. De hecho, esto es lo que estoy haciendo en todos mis esquemas.
Sin embargo, lo que debe tener en cuenta es la diferencia entre document y consulta middleware.Documento el middleware se ejecuta para init
, validate
, save
y remove
operaciones. Ahí, this
se refiere al documento:
schema.pre('save', function(next) {
this.increment();
return next();
});
Consulta el middleware se ejecuta para count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
y update
operaciones. Ahí, this
hace referencia al objeto de consulta. Actualizar el campo de versión para tales operaciones se vería así:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Fuente:documentación de mangosta .