Skip to content

johnmanko/hapi-mongoose-request

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hapi-mongoose-request-next

Set models in every request for Hapi.js 20+. Technically, it should work with Hapi.js 17+.

This is the great work of Luis Miguel Bula Mora upgraded to work with Hapi.js 20+. You can find Luis' original work at on Github.

Install

$ npm install hapi-mongoose-request-next

Usage

var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 8000 });

server.register([{
        register: require('hapi-mongoose-connect-next'),
        options: {
            mongooseUri: 'mongodb://localhost/my-database'
        }
    }, {
        register: require('hapi-mongoose-models-next'),
        options: {
            globPattern: './models/**/*.js',
            globOptions: {
                cwd: __dirname
            }
        }
    }, {
        register: require('hapi-mongoose-request-next'),
        options: {
            param: 'model',             // Default 'model'
            capitalize: true,           // Capitalize all the incoming route parameter, default true
            singularize: true           // Singularize all the incoming route parameter, default true
        }
    }], function (err) {

        if (err) {
            throw err;
        }

        server.route({
            method: 'GET',
            path: '/api/v1/{model}',     // The same is declared in the options
            method: function (request, reply) {

                if (request.Model) {
                    request.Model.find(function (err, docs) {
                        reply(err, docs);
                    });
                }
                else {
                    reply({ message: 'Not found' }).code(404);
                }
            }
        });

        server.start(function (err) {

            if (err) {
                throw err;
            }
            console.log('Server started at: ' + server.info.uri);
        });
    }
});

Tests

Run comand make test or npm test. Include 100% test coverage.

Working Directly With Source

If you decide to work directly with the this source (as opposed to installing it via npm as a project dependency), it's important to remember to link to a globally installed mongoose. Then, link this project globally, too. To make that easier for you, simply run the following, which will set everything up for you.

npm run link

This will have to be done in all of the hapi-mongoose-* family packages: hapi-mongoose-connect-next, hapi-mongoose-models-next, etc, as well as the main project you're developing. This ensures that each package works with the same Mongoose connect. Otherwise, you'll end up having failures.

For your development project, do something like the following:

npm i -g mongodb
npm i -g mongoose
npm link mongoose mongodb hapi-mongoose-models-next

License

MIT

About

Set models in every request for Hapi.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 91.4%
  • Makefile 8.6%