@syntropy/mongoose-document-versioner

2.0.2 • Public • Published

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 }
 * )
 */

Package Sidebar

Install

npm i @syntropy/mongoose-document-versioner

Weekly Downloads

10

Version

2.0.2

License

MIT

Unpacked Size

42 kB

Total Files

7

Last publish

Collaborators

  • justin-syntropy
  • compwright