Skip to content

Latest commit

 

History

History
71 lines (57 loc) · 1.68 KB

README.md

File metadata and controls

71 lines (57 loc) · 1.68 KB

PouchDB Resolve Conflicts

PouchDB plugin to assist in PouchDB conflict resolving.

Build Status

Installation

pouch-resolve-conflicts is hosted on npm.

Node

Install via npm install pouch-resolve-conflicts

var PouchDB = require('pouchdb')
PouchDB.plugin(require('pouch-resolve-conflicts'))

Browser

Use the browserified build.

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

Usage

// The resolve function. This function takes two documents and returns either
// one of them, a changed version of one of them, or nothing. In the latter the
// conflict will not be resolved. If there are more than two conflicting
// versions this function will be called with each version against the former
// result.
function resolveFun(a, b) {
  // cannot merge: return nothing
  if ('foo' in a && 'foo' in b) return
  
  // return one of the docs
  if ('foo' in a) return a
  if ('foo' in b) return b
  
  // return changed doc
  a.foo = 'bar'
  return a
}

var db = new PouchDB('mydb')

db
  // Lets have a conflict
  .bulkDocs({
    docs: [
      { _id: 'mydoc', _rev: '1-one', foo: 'bar' },
      { _id: 'mydoc', _rev: '1-two', bar: 'baz' }
    ],
    new_edits: false
  })
  // Query doc with `conflicts: true`
  .then(function(response) {
    return db.get('mydoc', { conflicts: true })
  })
  // And resolve it
  .then(function(doc) {
    return db.resolveConflicts(doc, resolveFun)
  })

Tests

npm test