Giter Site home page Giter Site logo

delta-pouch's Introduction

Delta Pouch

Build Status

A PouchDB plugin for partial updates that uses the every-doc-is-a-delta storage pattern. You can use delta pouch to enable conflict-free collaborative editing of the same docs.

Example

var db = new PouchDB('pages');

// Create a new page
db.save({ url: 'google.com', views: 0 }).then(function (doc) {
  // Update only the views attribute
  db.save({
    $id: doc.$id, // Set the id
    views: 1 });
});

Note: if you tried something similar with the db.put() built into pouchdb, the url attribute would be blanked out.

Live Demo: Profile

Profile Demo

Live Demo: Websites

Websites Demo

Usage

To use this plugin, include it after pouchdb.js in your HTML page:

<script src="pouchdb.js"></script>
<script src="pouchdb.delta-pouch.js"></script>

Or to use it in Node.js, just npm install it:

npm install delta-pouch

And then attach it to the PouchDB object:

var PouchDB = require('pouchdb');
PouchDB.plugin(require('delta-pouch'));

More Examples:

Create doc

db.save({ url: 'google.com', views: 0 }).then(function (doc) {
  // doc.$id is the id of the created doc
});

Update doc

db.save({
    $id: doc.$id, // id from creation
    views: 1
}).then(function (item) {
  // item.$id is the id of the updated doc, i.e. item.$id = doc.$id
});

Delete doc

db.delete(doc.$id).then(function (item) {
  // item.$id is the id of the deleted doc
});

Fetch all docs

db.all().then(function (docs) {
  // docs is an "associate array" of docs
});

Cleanup

db.cleanup().then(function () {
  // clean up has completed
});

Delta pouch stores every change as a doc. The cleanup() function removes any changes that are no longer needed and should probably be run via a periodic background process like a node cron job. It is not necessary to use the cleanup() function, but it is advisable as it reduces unneeded syncing and data storage.

Listen for events

db.deltaInit();
db.delta
  .on('create', function (doc) {
    // e.g. doc = { $id: 123, url: 'google.com', views: 0  }
  })
  .on('update', function (changes) {
    // e.g. changes = { $id: 123, views: 1  }
  })
  .on('delete', function (id) {
    // e.g. id = 123
  });

Save changes

var oldDoc = { $id: 123, url: 'google.com', views: 0 };
var newDoc = { url: 'google.com', views: 1 };
db.saveChanges(oldDoc, newDoc).then(function (changes) {
  // changes = { $id: 123, views: 1 };
});

Running the included examples

Note: you must have couchdb installed and Admin Party enabled

npm install
npm run dev

Visit the target example in your browser, e.g. http://127.0.0.1:8001/examples/websites

Using Delta Pouch with angularjs

Check out factoryng, an all-in-one angularjs adapter that has great support for Delta Pouch!

Contributing

Interested in contributing?

delta-pouch's People

Contributors

byronanderson avatar nolanlawson avatar redgeoff avatar

Watchers

 avatar  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.