An open API service indexing awesome lists of open source software.

https://github.com/gr2m/spawn-pouchdb-server

Configurable per-app pouchdb-server as a drop-in replacement for CouchDB
https://github.com/gr2m/spawn-pouchdb-server

Last synced: about 1 year ago
JSON representation

Configurable per-app pouchdb-server as a drop-in replacement for CouchDB

Awesome Lists containing this project

README

          

# spawn-pouchdb-server

> Configurable per-app pouchdb-server as a drop-in replacement for CouchDB

[![NPM version](https://badge.fury.io/js/spawn-pouchdb-server.svg)](https://www.npmjs.com/package/spawn-pouchdb-server)
[![Build Status](https://travis-ci.org/gr2m/spawn-pouchdb-server.svg?branch=master)](https://travis-ci.org/gr2m/spawn-pouchdb-server)
[![Coverage Status](https://coveralls.io/repos/gr2m/spawn-pouchdb-server/badge.svg?branch=master)](https://coveralls.io/r/gr2m/spawn-pouchdb-server?branch=master)
[![Dependency Status](https://david-dm.org/gr2m/spawn-pouchdb-server.svg)](https://david-dm.org/gr2m/spawn-pouchdb-server)

## Motivation

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

2. 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](https://github.com/gr2m/node-multicouch) for that).

## Usage

```js
// 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)

```js
// 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')
})
```

## Options



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

## Local setup & tests

```bash
git clone git@github.com:gr2m/spawn-pouchdb-server.git
cd spawn-pouchdb-server
npm install
npm test
```

## License

MIT