Hapi MongoDB connection plugin
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.
example
lib
test
.editorconfig
.gitignore
.travis.yml
LICENSE
README.md
package.json

README.md

hapi-mongojs

NPM version Build Status codecov.io

A tiny plugin to share a common MongoDB connection pool across the whole Hapi server using mongojs and ensure collection indexes.

Setup

npm install --save hapi-mongojs

Run the example

# remember to start MongoDB
npm run example:install
npm run example:start

# verify if server is running
http://localhost:8888/status
# run the example
http://localhost:8888/example

Example

const Hapi = require('hapi');
const Boom = require('boom');
// IMPORT NPM DEPENDENCY
const mongojs = require('hapi-mongojs');

// ADD PLUGINS CONFIG
const plugins = [
  {
    register: mongojs,
    options: {
      url: 'mongodb://localhost:27017/myDatabase',
      // ENSURE COLLECTION INDEXES (OPTIONAL)
      collections: [{
        name: 'myCollection1',
        indexes: [{
          keys: {
            'aField': 1
          },
          options: {
            'unique': true,
            'name': 'afield_idx'
          }
        }]
      }]
    }
  }
];

const server = new Hapi.Server();

server.connection({
  host: 'localhost',
  port: 8888
});

server.route([
  {
    method: 'GET',
    path: '/example',
    handler: function (request, reply) {

      // GET DB CONNECTION
      const myCollection = mongojs.db().collection('myCollection1');

      // EXECUTE A QUERY
      myCollection.find((error, value) => {
        if (error) {
          return reply(Boom.badData('Internal MongoDB error', error));
        }
        reply(value);
      });

    }
  }
]);

server.register(plugins, (err) => {
  if (err) {
    console.error(err);
    throw err;
  }

  server.start((err) => {
    if (err) {
      console.error(err);
      throw err;
    }
    console.log('info', `Server running at: ${server.info.uri}`);
  });
});