Easy Way To Increment Mongoose Document Versions For Any Update Queries?
I want to start taking advantage of Mongooses document versioning (__v key). I was having an issue actually incrementing the version value, then I found that you have to add this.i
Solution 1:
I'd say this is the way to go. pre middleware fits exactly this need, and I don't know any other way. In fact this is what I'm doing in all my schemas.
What you need to be aware of though, is the difference between document and query middleware.
Document middleware are executed for init
, validate
, save
and remove
operations. There, this
refers to the document:
schema.pre('save', function(next) {
this.increment();
returnnext();
});
Query middleware are executed for count
, find
, findOne
, findOneAndRemove
, findOneAndUpdate
and update
operations. There, this
refers to the query object. Updating the version field for such operations would look like this:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Source: mongoose documentation.
Solution 2:
For me the simplest way to do that is :
clientsController.putClient = async (req, res) => {
const id = req.params.id;
const data = req.body;
data.__v++;
awaitClients.findOneAndUpdate({ _id: id }, data)
.then( () =>
{
res.json(Ok);
}
).catch ( err => {
Error.code = '';
Error.error = err;
res.json(Error);
})
};
Post a Comment for "Easy Way To Increment Mongoose Document Versions For Any Update Queries?"