Configuração do Sequelize
-
Instalar o pacote
sequelize
com NPM:$ npm i sequelize
-
Instalar o pacote
sequelize-cli
com NPM:$ npm i sequelize-cli
-
Configurar as variáveis de ambiente do banco de dados: clicar
É recomendável utilizar um arquivo
.env
para armazenar essas informações, juntamente com a bibliotecadotenv
.# .env DATABASE_NAME=escola DATABASE_HOST= DATABASE_PORT= DATABASE_USERNAME= DATABASE_PASSWORD=
-
Configurar o Sequelize por meio do arquivo
.sequelizerc
:const { resolve } = require("path"); module.exports = { config: resolve(__dirname, "src", "config", "database.js"), "modules-path": resolve(__dirname, "src", "models"), "migrations-path": resolve(__dirname, "src", "models"), "seeders-path": resolve(__dirname, "src", "database", "seeds"), };
migrations-path
eseeders-path
são criados pelo Sequelize -
Definir o objeto de configuração do banco de dados:
require("dotenv").config(); module.exports = { dialect: "mariadb", host: process.env.DATABASE_HOST, port: process.env.DATABASE_PORT, username: process.env.DATABASE_USERNAME, password: process.env.DATABASE_PASSWORD, database: process.env.DATABASE_NAME, define: {}, dialectOptions: { timezone: "America/Sao_Paulo", underscored: true, underscoredAll: true, createdAt: "created_at", updatedAt: "updated_at", }, timezone: "America/Sao_Paulo", };
-
dialect
: tipo do banco de dados -
underscored
: indicar que a nomenclatura dos campos da tabela é composta por tudo em letra minúscula e palavras compostas são separadas por underline (_
) -
underscoredAll
: aplicar a regraunderscored
em todo mapeamento de atributo objeto-relacional
-
-
Criar as migrations com
sequelize-cli
:$ npm sequelize migration:create --name=[nome da tabela]
$ npm sequelize migration:create --name=alunos
-
Configurar o arquivo de migration (
migrations-path
, definido no arquivo.sequelizerc
) gerado no comando anterior:module.exports = { up: (queryInterface, Sequelize) => queryInterface.createTable("alunos", { id: { type: Sequelize.INTEGER, allowNull: false, autoIncrement: true, primaryKey: true, }, nome: { type: Sequelize.STRING, allowNull: false, }, sobrenome: { type: Sequelize.STRING, allowNull: false, }, email: { type: Sequelize.STRING, allowNull: false, }, idade: { type: Sequelize.INTEGER, allowNull: false, }, peso: { type: Sequelize.FLOAT, allowNull: false, }, altura: { type: Sequelize.FLOAT, allowNull: false, }, created_at: { type: Sequelize.DATE, allowNull: false, }, updated_at: { type: Sequelize.DATE, allowNull: false, }, }), down: (queryInterface) => queryInterface.dropTable("alunos"), };
-
Após a configuração das migrations, utilizar o seguinte comando para aplicá-las no banco de dados:
$ npm sequelize db:migrate
-
Configurar os models:
Todo model precisar extender a classe
Model
do Sequelize.É necessário implementar o método estático
init
: configurar as propriedades (tipo, validações, valor padrão) e informar a conexão, ou seja,sequelize
import Sequelize, { Model } from "sequelize"; export default class aluno extends Model { static init(sequelize) { super.init( { nome: Sequelize.STRING, sobrenome: Sequelize.STRING, email: Sequelize.STRING, idade: Sequelize.INTEGER, peso: Sequelize.FLOAT, altura: Sequelize.FLOAT, }, { sequelize } ); return this; } }
-
Criar a conexão (sequelize) e executar os models:
// index.js import Sequelize from "sequelize"; import databaseConfig from "../config/database"; import Aluno from "../models/Aluno"; const models = [Aluno]; const connection = new Sequelize(databaseConfig); models.forEach((model) => model.init(connection));
// app.js (arquivo de entrada da aplicação) import "./src/database";