Want to give a hand? We're happy to get you going. Ping us @HoodieHQ or in the Hoodie Community Chat.
Hoodie-like Store & Sync API on top of PouchDB
This plugin provides simple methods store and sync data. It combines pouchdb-hoodie-api, pouchdb-hoodie-sync, and pouchdb-hoodie-local-changes.
store = new Store(dbName, options)
// example:
// store = new Store('mydbname', { remote: 'http://localhost:5984/mydbname' })
// or:
// Store.defaults({remoteBaseUrl: 'http://localhost:5984' })
// store = new Store('mydb')
// all methods return promises
store.add(object)
store.add([object1, id2])
store.find(id)
store.find(object) // with id property
store.findOrAdd(id, object)
store.findOrAdd(object)
store.findOrAdd([object1, id2])
store.findAll()
store.findAll(filterFunction)
store.update(id, changedProperties)
store.update(id, updateFunction)
store.update(object)
store.update([object1, id2])
store.updateOrAdd(id, object)
store.updateOrAdd(object)
store.updateOrAdd([object1, id2])
store.updateAll(changedProperties)
store.updateAll(updateFunction)
store.remove(id)
store.remove(object)
store.remove([object1, id2])
store.removeAll()
store.removeAll(filterFunction)
store.clear() // removes all data without triggering events
// sync methods, return native promises
store.pull() // pulls changes one-time
store.push() // pushes changes one-time
store.sync() // pulls and pushes changes one-time
store.connect() // starts continuous replication
store.disconnect() // stops continuous replication and all pending requests
store.isConnected()
// pull / push / sync can be filtered by id, object, array
store.pull('objectId')
store.push(object)
store.push(['object1Id', object2])
store.getLocalChanges()
store.getLocalChanges(id)
store.getLocalChanges(object)
store.getLocalChanges([object1, id2])
// events
store.on('add', function(object, options) {})
store.on('update', function(object, options) {})
store.on('remove', function(object, options) {})
store.on('change', function(eventName, object, options) {})
store.on('pull', function(object) {})
store.on('push', function(object) {})
store.on('connect', function(object) {})
store.on('disconnect', function(object) {})
store.one(event, handler)
store.off(event, handler)
Install via npm
npm install --save pouchdb
npm install --save pouchdb-hoodie-store
Attach this plugin to the PouchDB
object:
var PouchDB = require('pouchdb')
PouchDB.plugin(require('pouchdb-hoodie-store'))
Include this plugin after pouchdb.js
in your HTML page:
<script src="node_modules/pouchdb/dist/pouchdb.js"></script>
<script src="node_modules/pouchdb-hoodie-store/dist/pouchdb-hoodie-store.js"></script>
Test are currently not running on >IE10 and mobile Safari. This is likely an error with the setup and we would be more than happy if you'd want to fix that :)
Run all tests and validates JavaScript Code Style using standard
npm test
To run only the tests
npm run test:node
test:browser:local
This will start a local server. All tests and coverage will be run at http://localhost:8080/__zuul
Have a look at the Hoodie project's contribution guidelines. If you want to hang out you can join #hoodie-pouch on our Hoodie Community Slack.