mongoose-document-versioner

Force version to increment every time you update or save a mongoose document

Usage no npm install needed!

<script type="module">
  import mongooseDocumentVersioner from 'https://cdn.skypack.dev/mongoose-document-versioner';
</script>

README

Mongoose Document Versioner

This module sets a document version key that is incremented any time you save or update a document. This is useful for detecting version conflicts.

Increments version on the following pre hooks:

  • findOneAndUpdate
  • updateOne
  • updateMany
  • update
  • save

Note: Model.findByIdAndUpdate() calls the findOneAndUpdate hook.

Usage

const versionerPlugin = require('mongoose-document-versioner');

const schema = new mongoose.Schema({ /* .... */ });
schema.plugin(versionerPlugin);
const Model = mongoose.model('Model', schema);

/* EXAMPLES */

Model.update({attr: 'foo'}, {attr: 'bar'}, {multi: true});
/*
 * mongo query:
 * model.update(
 *   { attr: 'foo' },
 *   { '$inc': { version: 1 }, '$set': { attr: 'bar' } },
 *   { multi: true }
 * )
 */

Model.findOneAndUpdate({attr: 'foo'}, {attr: 'bar'});
/*
 * mongo query:
 * model.findAndModify(
 *   { attr: 'foo' },
 *   { '$inc': { version: 1 }, '$set': { attr: 'bar' } },
 *   { new: false, upsert: false }
 * )
 */