Configurable per-app pouchdb-server as a drop-in replacement for CouchDB
Simplify development setup
CouchDB is a fantastic database, but setting it up for local development is not easy, as it also requires an Erlang runtime environment. Having a built-in PouchDB-Server in our apps will make CouchDB optional.
Isolated CouchDB configurations
Many Apps require couchdb users / admins / security settings etc. Using PouchDB makes it simple to isolate these in local development. (But if you don't mind the CouchDB dependency, you can also use node-multicouch for that).
// npm install --save spawn-pouchdb-server
var spawnPouchdbServer = require('spawn-pouchdb-server')
spawnPouchdbServer(function (error, server) {
console.log('PouchDB Server stared at localhost:5985/_utils')
server.stop(function () {
console.log('PouchDB Server stopped')
})
})
Full example with all options (and default values)
// npm install --save spawn-pouchdb-server
var spawnPouchdbServer = require('spawn-pouchdb-server')
spawnPouchdbServer({
port: 5985,
directory: './.db',
backend: {
name: 'leveldown',
location: './.db'
},
log: {
file: './.db/pouch.log',
level: 'info'
},
config: {
file: './.db/config.json'
},
timeout: 10000, // in ms
verbose: false
}, function (error, server) {
console.log('PouchDB Server stared at localhost:5985/_utils')
})
Option | Description | default |
---|---|---|
port | Port number where CouchDB API will be exposed | 5985 |
directory | Directory where PouchDB server will store it's files. Also default location for file based levelup back-ends | 5985 |
backend | Either an object with name and location properties (see below), or false for in-memory |
see below |
backend.name | npm module name of levelup storage back-end | built in leveldown |
backend.location | Location option as passed to levelup(location) | "./.db" |
log.file | Location of log file. Set to false to disable logging to a file. log.file is an alias for config.log.file . Set to false to not persist logs |
"./.db/pouch.log" |
log.level | One of debug , info , warning , error , none . log.level is an alias for config.log.level |
"info" |
config.file | Location of CouchDB-esque config file. Set to false to not persist configuration. |
"./.db/config.json" |
config.* | All the CouchDB Configuration, e.g. config.admins = {"adminuser": "adminpass"} to fix admin party |
|
timeout | Time to connect to backend in milliseconds | 10000 |
verbose (true/false) | Log status information | false |
git clone git@github.com:gr2m/spawn-pouchdb-server.git
cd spawn-pouchdb-server
npm install
npm test
MIT