Skip to content
A Hapi plugin providing a CouchDb connection.
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
.gitignore
LICENSE
README.md
index.js
package.json

README.md

hapi-couchdb

  • Provides an direct interface to Nano and a configurable database connection.
  • Integrates with Hapi as a plugin.
  • Allows you to share a CouchDb connection across your whole Hapi server.
  • Can be used outside of Hapi when necessary.

Prerequisites:

Usage

Example

var Hapi = require('hapi'),
    server = new Hapi.Server();

server.connection({
    host: '0.0.0.0',
    port: 8080
});

// Register plugin with some options
server.register({
    plugin: require('hapi-couchdb'),
    options: {
        url: 'http://username:password@localhost:5984',
        db: 'mycouchdb'
    }
}, function (err) {
    if(err) {
        console.log('Error registering hapi-couchdb', err);
    } else {
        console.log('hapi-couchdb registered');
    }
});

// Example of accessing CouchDb within a route handler
server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {
        var CouchDb = request.server.plugins['hapi-couchdb'];
        // Get a document from the db
        CouchDb.Db.get('rabbit', { revs_info: true }, function(err, body) {
            if (err) {
                throw new Error(CouchDb.Error(error); // Using error decoration convenience method
            } else {
                reply(body);
            });
    }
});

server.start(function() {
    console.log('Server running on host: ' + server.info.uri);
});

Within Your Hapi Plugin

exports.register = function (server, options, next) {
    
    var CouchDb = server.plugins['hapi-couchdb'];
    
    // Do something cool with CouchDb here...
    
    next();
};

Usage Outside of Hapi

var CouchDb = require('hapi-couchdb').init(options);

For example:

var CouchDb = require('hapi-couchdb').init({db: 'mycouchdb'});

// Do something cool with CouchDb here...

Methods

Db

The configured database interface. More information available here.

Db.update

Db.update(/** document id **/ id, /** updated document **/ doc, /** callback **/ callback);

A document update convenience method. It will create the document in the database if it doesn't exist.

Example usage:

Db.update(id, doc, function(error, body) {
    if(error) {
        console.log(error);
    } else {
        console.log('Document Updated! Current revision:', body._rev);
    }
});

Nano

The full Nano interface. More information available here.

Error

CouchDb.Error(/* CouchDb error response */ error);

A convenience method that will decorate an error returned by CouchDb using Boom for Hapi compatability. This function is only exposed if the module if used as a Hapi plugin.

Options

// Example options
{
    url: 'http://myusername:mypassword@localhost:5984', // CouchDb host
    db: 'mycouchdb', // Database to use. *Required*
}

url {string} optional

The CouchDb host to use. Defaults to http://localhost:5484

db {string} required

The name of the database you wish to use. This option is required.

request {object} optional

Nano uses Request under the hood. You can use this configuration option to fine tune requests made by Nano to CouchDb. A full list of request options can be found here

Licence

MIT

You can’t perform that action at this time.