CouchDB API for data persistence and offline sync
hoodie-store-server
is a Hapi plugin that implements
CouchDB’s Document API
and exposes a JavaScript API to manage databases, access and replications.
var Hapi = require('hapi')
var hoodieStore = require('@hoodie/store-server')
var PouchDB = require('pouchdb')
var server = new Hapi.Server()
server.connection({
port: 8000
})
server.register({
register: hoodieStore,
options: {
PouchDB: PouchDB
}
}, function (error) {
if (error) throw error
})
server.start(function () {
console.log('Server running at %s', server.info.uri)
})
PouchDB constructor. Required
options: {
PouchDB: require('pouchdb-core').plugin('pouchdb-adapter-leveldb')
}
If you want connect to a CouchDB, use the pouchdb-adapter-http
and set
options.prefix
to the CouchDB url. All requests will be proxied to CouchDB
directly, the PouchDB constructor is only used for server.plugins.store.api
options: {
PouchDB: require('pouchdb-core')
.plugin('pouchdb-adapter-http')
.defaults({
prefix: 'http://localhost:5984',
auth: {
username: 'admin',
password: 'secret'
}
})
}
Route lifecycle hooks. Optional
options: {
hooks: {
onPreResponse: onPreResponseHandler,
onPreAuth: onPreAuthHandler,
onPostAuth: onPostAuthHandler,
onPreHandler: onPreHandlerHandler,
onPostHandler: onPostHandlerHandler,
onPreResponse: onPreResponseHandler
}
}
See http://hapijs.com/api#request-lifecycle for more information
Local setup
git clone https://github.com/hoodiehq/hoodie-store-server.git
cd hoodie-store-server
npm install
Run all tests and code style checks
npm test
Have a look at the Hoodie project's contribution guidelines. If you want to hang out you can join our Hoodie Community Chat.