A Hapi plugin for the fabulous Sequelize ORM
npm install @fredguile/hapi-sequelize


This version of hapi-sequelize is compatible with Hapi 17.x & Sequelize 4.x. If you're
encountering an issue related to any specific version please open an issue.
npm install --save @fredguile/hapi-sequelize
Simply pass in your sequelize instance and a few basic options and voila. Options accepts a single object
or an array for multiple dbs.
``javascript`
await server.register({
plugin: require("hapi-sequelize"),
options: {
instances: [
{
name: "dbname", // identifier
models: ["./server/models/*/.js"], // paths/globs to model files
sequelize: new Sequelize(config, opts), // sequelize instance
sync: true, // sync models - default false
forceSync: false, // force sync (drops tables) - default false
onConnect: function(sequelize) {
// Optional
// migrations, seeders, etc.
}
}
]
}
});
Each registration adds a DB instance to the server.plugins['@fredguile/hapi-sequelize'] object with the
name option as the key.
`javascript
function DB(sequelize, models) {
this.sequelize = sequelize;
this.models = models;
}
// smth like this
server.plugins["@fredguile/hapi-sequelize"][opts.name] = new DB(
opts.sequelize,
models
);
`
#### getDb(name)
The request object gets decorated with the method getDb. This allows you to easily grab a
DB instance in a route handler. If you have multiple registrations pass the name of the one
you would like returned or else the single or first registration will be returned.
`javascript`
handler(request, h) {
const db1 = request.getDb('db1');
console.log(db1.sequelize);
console.log(db1.models);
}
#### db.getModel('User')
Returns single model that matches the passed argument or null if the model doesn't exist.
#### db.getModels()`
Returns all models on the db instance
If you have any ideas for useful additions to the API or any other improvements to the plugin
please open an issue or a PR.
Also feel free to tackle any of the outstanding todo's in the issues. These are mostly currently
for testing, documentation. I hope to at least provide a reliable, developer friendly plugin.