Chcę zacząć korzystać z wersjonowania dokumentów Mongooses (klucz __v). Wystąpił problem powodujący zwiększenie wartości wersji, a następnie stwierdziłem, że podczas wykonywania zapytania trzeba dodać this.increment()
.Łatwy sposób zwiększania wersji dokumentów Mongoose dla jakichkolwiek zapytań aktualizacji?
Czy istnieje sposób na automatyczne zwiększenie inkrementacji? Na razie, po prostu dodaje się go do pre middleware przez zapytaniami zmiana typu:
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()
})
})
}
co wydaje się pracować .. Ale trochę myśli nie byłoby już sposób to zrobić w ciągu Mongoose .. czy się mylę?
Więc mówisz, że musiałbym podzielić przyrost "__v' między metodami aktualizacji dokumentu (' zapisz') i metodami aktualizacji zapytań ('findOneAndUpdate',' update')? Coś jak ** [this] (http://pastebin.com/QGxgLhQz) **? – Justin
Tak, musisz podzielić inkrementację między dokumentem a oprogramowaniem pośredniczącym. Proponuję dwie różne metody, jak pokazano w moim poście, zamiast próbować wycisnąć 2 różne sposoby w jednej metodzie. – Antoine
FYI @Antoine, funkcja Query MW wymagała wywołania zwrotnego 'next', o którym dowiedziałem się z [tego wątku] (http://stackoverflow.com/questions/35540047/incorrect-document-revision-number-found-in- post-update-middleware). Zaktualizowałem twój wpis – Justin