Ich möchte beginnen, Vorteile von Mongooses Dokument Versionierung (__v Schlüssel) zu nutzen. Ich hatte ein Problem, das den Versionswert tatsächlich inkrementiert, dann habe ich festgestellt, dass Sie this.increment()
hinzufügen müssen, wenn Sie eine Abfrage ausführen.Einfache Möglichkeit, Mongoose-Dokumentversionen für alle Aktualisierungsabfragen zu erhöhen?
Gibt es eine Möglichkeit, automatisch inkrementiert zu werden? Vorerst habe ich es nur auf die pre Middleware für eine Update-Typ-Abfragen:
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()
})
})
}
Welche scheint zu funktionieren .. Aber ich dachte, irgendwie schon da ein Weg wäre, dies innerhalb Mongoose zu tun .. Liege ich falsch?
Sie sagen also, ich müsste die '__v'-Inkrementierung zwischen den Dokumentupdate-Methoden ('save') und den Abfrage-Update-Methoden (' findOneAndUpdate', 'update') aufteilen? So etwas wie ** [this] (http://pastebin.com/QGxgLhQz) **? – Justin
Ja, Sie müssen die Inkrementierung zwischen Dokumenten- und Abfrage-Middlewares aufteilen. Ich schlage vor, zwei verschiedene Methoden zu verwenden, wie in meinem Beitrag gezeigt, anstatt zu versuchen, zwei verschiedene Methoden in einer einzigen Methode zu verwenden. – Antoine
FYI @Antoine, die Query MW-Funktion benötigt den 'nächsten' Callback, den ich aus [diesem Thread] herausgefunden habe (http://stackoverflow.com/questions/35540047/incorrect-document-revision-number-found-in- Post-Update-Middleware). Ich habe deinen Beitrag aktualisiert – Justin