Powiedziałbym, że to jest droga. przed oprogramowanie pośredniczące odpowiada dokładnie tym potrzebom i nie znam innego sposobu. W rzeczywistości to właśnie robię we wszystkich moich schematach.
Musisz jednak pamiętać o różnicy między dokumentem i zapytanie oprogramowanie pośredniczące.Dokument oprogramowanie pośrednie jest wykonywane dla init
, validate
, save
i remove
operacje. Tam, this
odnosi się do dokumentu:
schema.pre('save', function(next) {
this.increment();
return next();
});
Zapytanie oprogramowanie pośrednie jest wykonywane dla count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
i update
operacje. Tam, this
odnosi się do obiektu zapytania. Aktualizacja pola wersji dla takich operacji wyglądałaby tak:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Źródło:dokumentacja mongoose .