Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hapi-mongoose2

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hapi-mongoose2

mongoose plugin for hapi-based servers

  • 4.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

hapi-mongoose2

npm version Greenkeeper badge CircleCI

Mongoose plugin for hapi-based servers. Supports connecting to one or multiple databases and look up and register models by connection. The plugin options are:

  • options - a connection or an array of connections where:
    • connection - an object containing:
      • uri - a mongo uri string
      • alias - (optional) a database name alias used to namespace connections when multiple are created. otherwise ignored.
      • loadSchemasFrom - (optional) one of:
        • An array of globs from where schemas will be loaded. matching files must export a mongoose.Schema object or a function with the signature async function(server) returning a schema.
        • An object containing Mongoose.Schema elements.
      • options - (optional) options passed to mongoose createConnection method. unknown properties are allowed:
        • auth - an object with auth credentials
          • user
          • password
        • autoIndex
        • bufferCommands
    • connections - an array of connection objects as described above.
    • decorations - (optional) an array of interfaces to be decorated using server.decorate method. allowed values are server, request.

Connection and models are accessible under the server.app.mongo property. When multiple connections are created the database name or alias is used as namespace for accessing each database properties. Same applies for decorated interfaces.

Models are named as the filename matching the schema pattern. Model name first letter is capitalized by default. e.g. Animal.

Example

const plugin = {
    plugin: require('hapi-mongoose2'),
    options: {
        connections: [
            {
                uri: 'mongodb://localhost:27017/myapp'
            },
            {
                alias: 'safebox',
                uri: 'mongodb://localhost:27017/secrets',
                loadSchemasFrom: [
                    'src/schemas',
                    '!.{md,json}'
                ],
                options: {
                    auth: {
                        user: 'admin',
                        password: 'pa55w0rd'
                    },
                    autoIndex: false,
                    bufferCommands: true
                }
            }
        ],
        decorations: ['request', 'server']
    }
};

const server = new Hapi.server();
await server.register(plugin);

// Using database `secrets` from:
// 1 - `server.app` object
// 2 - `request` decorated object
// 3 - `server` decorated object

const { Admin } = server.app.mongo.safebox.models;
await Admin.create({ name: 'Quentin', last: 'Tarantino' });

server.route({
    method: 'GET',
    path: '/',
    handler: function (request) {
        const { Admin } = request.mongo.safebox.models;
        return Admin.findOne({ name: 'Quentin' }).exec();
    }
});

await server.mongo.safebox.connection.close();

Dependencies

mongoose needs to be installed alongside this plugin in order to work.

Keywords

FAQs

Package last updated on 19 May 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc