Git Product home page Git Product logo

mongoose-version's Introduction

Mongoose Version

Build Status Coverage Status mongoose-version analyzed by Codellama.io

Mongoose Version is a mongoose plugin to save document data versions. Documents are saved to a "versioned" document collection before saving original documents and kept for later use.

Installation

$ npm install mongoose-version

Usage

To use mongoose-version for an existing mongoose schema you'll have to require and plugin mongoose-version into the existing schema.

The following schema definition defines a "Page" schema, and uses mongoose-version plugin with default options

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var version = require('mongoose-version');

var Page = new Schema({
  title : { type : String, required : true},
  content : { type : String, required : true },
  path : { type : String, required : true},
  tags : [String],

  lastModified : Date,
  created : Date
});

Page.plugin(version);

Mongoose-version will define a schema that has a refId field pointing to the original model and a version array containing cloned copies of the versioned model.

Mongoose-version will add a static field to Page, that is "VersionedModel" that can be used to access the versioned model of page, for example for querying old versions of a document.

Option keys and defaults

  • collection: name of the collection to persist versions to. The default is 'versions'. You should supply this option if you're using mongoose-version on more than one schema.
  • suppressVersionIncrement: mongoose-version will not increment the version of the saved model before saving the model by default. To turn on auto version increment set this option to false. Default: true
  • suppressRefIdIndex: mongoose-version will not index the refId field by default. To turn on indexing on refId set this option to false. Default: true
  • strategy: mongoose-version allows versioned document to be saved as multiple documents in a collection or in a single document in a version array. In case you want to save documents in an array specify array strategy, for storing versioned documents in multiple documents specify collection strategy. Default array.
  • maxVersions: Only valid for array strategy. Specifies how many historic versions of a document should be kept. Defaults to Number.MAX_VALUE.
  • mongoose: Pass a mongoose instance to work with
  • removeVersions: Removes versions when origin document is removed. Defaults to false
  • ignorePaths: Defines an array of document field names that do not trigger a new version to be created when this field was changed. Only working with array strategy (default strategy). Defaults to [].
  • refIdType: The type of the _id field used in your document. Will be used to set the type of the refId. Defaults to ObjectId.
  • Options are passed to a newly created mongoose schemas as settings, so you may use any option supported by mongoose

In case you only want to specify the collection name, you can pass a string instance to options that is taken as collection name. Options may be passed as follows:

Page.plugin(version, { collection: 'Page__versions' });

Misc

Debug Messages

Mongoose-version uses the debug module for debug messages. You can enable mongoose-version debug logs by setting the DEBUG environment variable to mongoose:version.

DEBUG=mongoose:version

on Windows use

SET DEBUG=mongoose:version

Debug messages are logged if a version was persisted to mongodb or a version was removed from mongodb.

mongoose-version's People

Contributors

saintedlama avatar yitomok avatar kakitlee avatar reggino avatar alanshaw avatar benjamta avatar doowb avatar jeresig avatar

Stargazers

Jason Zhao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.