Skip to content

Compares two objects and extracts the differents. It supports different result structure in order to use for Restful APIs, or MongoDB pacthes and etc

Notifications You must be signed in to change notification settings

farhadjalali/diffutil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diffutil

diffutil compares two objects and extracts the differences. It supports different result structure in order to use for Restful APIs, or MongoDB patches and etc.

Install

npm install diffutil

Features

  • Get the structural differences between two objects.
  • Observe the structural differences between two objects.
  • Supports different result structure based on different needs such as Restful APIs, or MongoDB patches.

Importing

nodejs

var diff = require('diffutil')
// or:
// const diff = require('diffutil');
// const { diff } = require('diffutil');
// es6+:
// import diff from 'diffutil';

Examples

You can find more samples in main.test.ts.

const {diff} = require('./main');

let _id = new ObjectId();
let oldDoc = {_id, month: "may"};  
let newDoc = {_id, month: "april"};  
let result = diff(oldDoc, newDoc);
// result :  [{query: {_id}, update: {$set: {month: "april"}}}]

Arrays update

let _id = new ObjectId();
let oldDoc = {_id, addresses: [{_id: item1Id, city: "London"}]};
let newDoc = {_id, addresses: [{_id: item1Id, city: "Sydney"}, {_id: item2Id, city: "Paris"}]};

let result = diff(oldDoc, newDoc);
// result :   
//    [{
//      query: {_id},
//      update: {
//           $set: {"addresses.$[item1].city": "Sydney", "addresses.$[item2]": {_id: item2Id, city: "Paris"}},
//      },
//      options: {
//        arrayFilters: [{"item1._id": item1Id}, {"item2._id": item2Id}]
//      }
//   }];

About

Compares two objects and extracts the differents. It supports different result structure in order to use for Restful APIs, or MongoDB pacthes and etc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published