Я хочу начать пользоваться версией документа Mongooses (__v key). У меня возникла проблема, фактически увеличивающая значение версии, тогда я обнаружил, что при выполнении запроса вы должны добавить this.increment()
.Легкий способ увеличения версий документов Mongoose для любых запросов на обновление?
Есть ли способ автоматического увеличения? На данный момент, я просто добавил его к предварительно промежуточного слоя в течение запросов обновления типа:
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()
})
})
}
который, кажется, работает .. Но я своего рода думал, что уже быть способ сделать это в Мангуста .. Я ошибаюсь?
Итак, вы говорите, что мне придется разделить «__v» инкремент между методами обновления документа ('save') и методами обновления запроса (' findOneAndUpdate', 'update')? Что-то вроде ** [this] (http://pastebin.com/QGxgLhQz) **? – Justin
Да, вам нужно разделить инкремент между документами и посредниками запроса. Я предлагаю иметь 2 разных метода, как показано в моем сообщении, вместо того, чтобы пытаться сжать два разных способа в одном методе. – Antoine
FYI @Antoine, функция запроса MW нуждалась в обратном вызове 'next', который я узнал из [этой темы] (http://stackoverflow.com/questions/35540047/incorrect-document-revision-number-found-in- после обновления-промежуточный слой). Я обновил сообщение – Justin