Voglio iniziare a sfruttare il controllo delle versioni dei documenti Mongooses (__v). Stavo riscontrando un problema che incrementava effettivamente il valore della versione, quindi ho scoperto che è necessario aggiungere this.increment()
durante l'esecuzione di una query.Un modo semplice per incrementare le versioni dei documenti Mongoose per qualsiasi query di aggiornamento?
C'è un modo per aumentare automaticamente? Per il momento, ho solo aggiunto al pre middleware per un aggiornamento di tipo query:
module.exports = Mongoose => {
const Schema = Mongoose.Schema
const modelSchema = new Schema({
name: Schema.Types.String,
description: Schema.Types.String
})
// Any middleware that needs to be fired off for any/all update-type queries
_.forEach([ 'save', 'update', 'findOneAndUpdate' ], query => {
// Increment the Mongoose (__v)ersion for any updates
modelSchema.pre(query, function(next) {
this.increment()
next()
})
})
}
che sembra funzionare .. Ma io kinda pensato che ci sarebbe già un modo per fare questo all'interno di Mongoose .. ho sbagliato?
Quindi stai dicendo che dovrei dividere l'incremento di '__v' tra i metodi di aggiornamento del documento (' save') ei metodi di aggiornamento delle query ('findOneAndUpdate',' update')? Qualcosa come ** [questo] (http://pastebin.com/QGxgLhQz) **? – Justin
Sì, è necessario dividere l'incremento tra il documento e il middleware delle query. Suggerisco di avere 2 metodi diversi come mostrato nel mio post, piuttosto che provare a spremere 2 modi diversi in un unico metodo. – Antoine
FYI @Antoine, la funzione Query MW aveva bisogno del callback "next", che ho scoperto da [questo thread] (http://stackoverflow.com/questions/35540047/incorrect-document-revision-number-found-in- post-update-middleware). Ho aggiornato il tuo post – Justin