https://github.com/danecando/hapi-sequelize
Hapi plugin for the Sequelize ORM
https://github.com/danecando/hapi-sequelize
hapi-plugin hapi-sequelize javascript sequelize-orm
Last synced: 9 months ago
JSON representation
Hapi plugin for the Sequelize ORM
- Host: GitHub
- URL: https://github.com/danecando/hapi-sequelize
- Owner: danecando
- License: mit
- Archived: true
- Created: 2014-08-25T00:26:53.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2018-07-24T05:32:06.000Z (over 7 years ago)
- Last Synced: 2025-04-03T13:13:52.901Z (9 months ago)
- Topics: hapi-plugin, hapi-sequelize, javascript, sequelize-orm
- Language: JavaScript
- Homepage:
- Size: 91.8 KB
- Stars: 111
- Watchers: 7
- Forks: 35
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
## hapi-sequelize - a hapi plugin for the sequelize orm
[](https://travis-ci.org/danecando/hapi-sequelize)
[](https://www.npmjs.com/package/hapi-sequelize)
### Warning :warning:
This project is no longer actively maintained. The current version has been tested for versions of Hapi up to 13.x &
Sequelize 3.x. It is known to be incompatible with versions of Hapi 17+ & Sequelize 4+.
There is a great fork of this project that has been in active development located at: https://github.com/valtlfelipe/hapi-sequelizejs
### Installation
`npm install --save hapi-sequelize`
### Configuration
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
server.register([
{
register: require('hapi-sequelize'),
options: [
{
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 (database) { // Optional
// migrations, seeders, etc.
}
}
]
}
]);
```
### Database Instances
Each registration adds a DB instance to the `server.plugins['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['hapi-sequelize'][opts.name] = new DB(opts.sequelize, models);
```
### Usage with Glue
If you use [Glue](https://github.com/hapijs/glue) to compose your server, you'll need to load ``hapi-sequelize`` like this;
```javascript
var manifest = require('./config/manifest');
manifest.registrations.push({
"plugin": {
"register": "hapi-sequelize",
"options": {
"name": "name",
"models": 'models/models/*.js',
"sequelize": new Sequelize(config, opts),
"sync": true,
"forceSync": false // force sync (drops tables) - default false
}
}
})
// Load the manifest and start the server
```
### API
#### `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, reply) {
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
### Contributing
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.