mongoose-plugin-diff

0.2.0 • Public • Published

mongoose-plugin-diff

Build Status Coverage Status Dependency Status for CentralPing/mongoose-plugin-diff Known Vulnerabilities

A mongoose.js plugin to report document modification differences.

The plugin uses mongoose's modification methods for determining which properties have been changed.

The original document values are snap shot post-init for existing documents as well as post-save for all documents.

Installation

npm i --save mongoose-plugin-diff

API Reference

Example

const diffPlugin = require('mongoose-plugin-diff');
const schema = Schema({...});
schema.plugin(diffPlugin[, OPTIONS]);

mongoose-plugin-diff~options

Kind: inner property of mongoose-plugin-diff

Param Type Default Description
[options] object
[options.optionKey] string "diff" the path options key to mark paths for inclusion in monitoring for modification. If no paths are provided or tagged, document modification is monitored.
[options.paths] array the paths paths for monitoring for modification. If no paths are provided or tagged, document modification is monitored.
[options.snapShotPath] string "__snapShot" the path to store snap shot properties for capturing original values.
[options.methodName] string "getDiff" the method name for creating an object with the original values for modified properties.

Examples

With Monitoring Entire Document

const diffPlugin = require('mongoose-plugin-diff');
const schema = Schema({foo: String, bar: String});
schema.plugin(diffPlugin);

const Foo = mongoose.model('Foo', schema);
Foo.findOne().then(foo => { // {foo: 'My orig', bar: 'My other orig'}
  foo.getDiff(); // {}

  foo.foo = 'My update';
  foo.getDiff(); // {foo: 'My orig'}

  foo.foo = 'My second update';
  return foo.save();
}).then(foo => { // {foo: 'My second update', bar: 'My other orig'}
  foo.getDiff(); // {foo: 'My update'}
});

With Monitoring Selected Properties

const diffPlugin = require('mongoose-plugin-diff');
const schema = Schema({
  foo: {
    type: String
  },
  bar: {
    type: String,
    diff: true // indicates to monitor this property for modification
  }
});
schema.plugin(diffPlugin);

// Alternatively, paths to monitor can be provided by the plugin options
// schema.plugin(diffPlugin, { paths: ['bar'] });

const Foo = mongoose.model('Foo', schema);
Foo.findOne().then(foo => { // {foo: 'My orig', bar: 'My other orig'}
  foo.getDiff(); // {}

  foo.foo = 'My update';
  foo.getDiff(); // {}

  foo.bar = 'My other update';
  foo.getDiff(); // {bar: 'My other orig'}

  foo.bar = 'My other next update';
  return foo.save();
}).then(foo => { // {foo: 'My update', bar: 'My other second update'}
  foo.getDiff(); // {foo: 'My other update'}
});

License

Apache 2.0

Readme

Keywords

Package Sidebar

Install

npm i mongoose-plugin-diff

Weekly Downloads

30

Version

0.2.0

License

Apache-2.0

Last publish

Collaborators

  • jasoncust