Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Merge plugin for mongoose documents
JavaScript
branch: master

Merge pull request #5 from alex94puchades/patch-1

Added MIT license in package.json
latest commit f850b149a0
@eherve authored
Failed to load latest commit information.
lib Fix restriction and add partial path
.gitignore Initial commit
LICENSE Initial commit
README.md Update README.md
index.js Initial commit
package.json Added MIT license in package.json

README.md

mongoose-merge-plugin

Mongoose plugin for document merging

Install npm install mongoose-merge-plugin

Loading

var merge = require('mongoose-merge-plugin');

Inintialization

var mongoose = require('mongoose');

mongoose.plugin(merge);

Usage

The method merge is added to all mongoose documents. It takes a source object as parameter and merge it in the target existing documents. It checks for existing values in the source object regarding the field path of the destination document. It does not merge the _id and __v default fields and check for the schema field option mergeable. If the option is false, the merge skip the field as well.

The method merge accept a second parameter that is the merge options. this parameter allow to specify a filter on fields when calling the merge.

  • options.fields

It is a string with field names, separeted by one or more spaces. If the field path is present in this string, the merge check if the mongoose field is mergeable and if yes it allows the merge. If before the field path a + flag is added, then the field will be merged (overriding the schema field option). If the flag is '-' the field will not be merged as well as if the field name is not present.

  • options.virtuals

It is a boolean value that activates the merging of the virtuals fields

Example

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;
var schema = new Schema({
  name: String,
  description: String,
  notMergedField: { type: String, mergeable: false }
});
var Test = mongoose.model('Test', schema);
var test = new Test({ name: "test", description: "desc", notMergedField: "testNMF" });
console.log(test); // LOG: { i_id: ..., name: test, description: desc, notMergedField: testNMF ...}
test.merge({ name: "testChanged", description: "descChanged", notMergedField: "testNMFChanged" });
console.log(test); // LOG: { i_id: ..., name: testChanged, description: descChanged, notMergedField: testNMF ...}
test.merge({ name: "test", description: "desc" }, { fields: "-description" });
console.log(test); // LOG: { i_id: ..., name: test, description: descChanged, notMergedField: testNMF ...}

Support

it-tweaks

Something went wrong with that request. Please try again.