Jag skulle säga att det här är vägen att gå. före middleware passar just detta behov, och jag vet inget annat sätt. Det är faktiskt vad jag gör i alla mina scheman.
Vad du dock måste vara medveten om är skillnaden mellan dokument och fråga mellanprogram.Dokument middleware exekveras för init
, validate
, save
och remove
operationer. Där, this
hänvisar till dokumentet:
schema.pre('save', function(next) {
this.increment();
return next();
});
Fråga middleware exekveras för count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
och update
operationer. Där, this
hänvisar till frågeobjektet. Att uppdatera versionsfältet för sådana operationer skulle se ut så här:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Källa:mangosdokumentation .