This is a plugin for Fastify to integrate Sequelize deeply into your project.
Supports Sequelize up to version 6 and can play along nicely with sequelize-cli
.
fastify-sequelize
mostly 'borrows' the mechanics of sequelize-cli
's index.js
model file. By doing so, it will be imported immediately, making generated
Sequelize models ready to use.
I think integrating directly into fastify
instance is better (and cleaner, in
my opinion). And by doing so, handling routes will eliminate the need to
import models
directory manually to each route handlers (or controllers).
- Install via:
- NPM:
npm i @easterneas/fastify-sequelize
, or - Yarn:
yarn add @easterneas/fastify-sequelize
- NPM:
- Register this plugin:
where
fastify.register(require('@easterneas/fastify-sequelize'), options)
options
contains your Sequelize configuration. - There is no step 3, by now you can use it through
this.models
(orfastify.models
) already!
It's pretty easy to integrate the already-installed Sequelize to your Fastify project. Let me show you how.
I will assume that your Sequelize configuration file is in a default location,
created through sequelize-cli
package.
const fp = require('fastify-plugin')
const config = require('../config/config.json')
module.exports = fp(async function (fastify, opts) {
fastify.register(require('@easterneas/fastify-sequelize', config))
})
// app.js
const fastify = require('fastify')
const config = require('./config/config.json')
const app = fastify()
fastify
// ...
.register(require('@easterneas/fastify-sequelize'), config)
// ...
// .listen( ... )
After installation, you can just use this.models
when you handle through routes.
By default, sequelize
and Sequelize
are included, and it will search through
default models
in your project's root directory.
If there is one, it will start importing and parsing Sequelize models, either
it's generated manually, or by using sequelize-cli
package. Neat!
If there are bugs appeared when using this plugin, feel free to create a new issue. But remember to always add logs and the version of the plugin before posting issues here, and thank you for letting me know about the issues!