Como criar migrations no Sequelize?

As migrations no Sequelize são usadas para versionar o banco de dados, permitindo que as alterações no esquema sejam aplicadas de forma controlada e sem perda de dados.

Como criar migrations no Sequelize?

Migrations no Sequelize são usadas para versionar o banco de dados, permitindo que as alterações no esquema do banco sejam feitas de maneira controlada e segura. Elas ajudam a manter a consistência do banco entre diferentes ambientes de desenvolvimento, testes e produção.

1. Instalando Sequelize CLI

Primeiro, instale a ferramenta Sequelize CLI que irá facilitar a criação de migrations:

npm install --save-dev sequelize-cli

2. Configurando o Sequelize CLI

Crie um arquivo de configuração chamado config.json dentro de uma pasta config para informar o Sequelize sobre os parâmetros de conexão ao banco de dados:

{
  "development": {
    "username": "root",
    "password": null,
    "database": "meubanco",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

3. Criando uma migration

Para criar uma migration, utilize o seguinte comando no terminal:

npx sequelize-cli migration:generate --name create-usuarios

Isso criará um arquivo de migration dentro da pasta migrations. O arquivo terá um nome semelhante a xxxxxx-create-usuarios.js, onde xxxxxx é um timestamp.

Dentro deste arquivo de migration, você pode definir as operações que serão realizadas no banco de dados. Exemplo de criação de uma tabela usuarios:

'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('Usuarios', {
      id: {
        type: Sequelize.INTEGER,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
      },
      nome: {
        type: Sequelize.STRING,
        allowNull: false,
      },
      email: {
        type: Sequelize.STRING,
        allowNull: false,
        unique: true,
      },
      createdAt: {
        type: Sequelize.DATE,
        allowNull: false,
      },
      updatedAt: {
        type: Sequelize.DATE,
        allowNull: false,
      }
    });
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('Usuarios');
  }
};

4. Executando migrations

Para aplicar as migrations no banco de dados, execute o seguinte comando:

npx sequelize-cli db:migrate

Esse comando irá rodar todas as migrations pendentes e atualizar o banco de dados de acordo com as mudanças definidas.

5. Revertendo migrations

Se precisar desfazer uma migration, você pode reverter a última migration executada com:

npx sequelize-cli db:migrate:undo

Esse comando desfaz a última operação de migration aplicada no banco.

Conclusão

Com migrations, o Sequelize permite que você controle a versão do banco de dados e aplique alterações de forma organizada. Isso é fundamental para ambientes de desenvolvimento colaborativos e produção, garantindo que o banco de dados seja mantido de forma consistente.

As migrations são fundamentais em qualquer projeto que envolva banco de dados, principalmente em aplicações que estão sendo desenvolvidas por uma equipe de pessoas. Elas garantem que todos os desenvolvedores aplicam as mesmas alterações no banco e evitam erros de inconsistência entre os ambientes de desenvolvimento, staging e produção.

O Sequelize, ao fornecer uma interface para gerenciar migrations, facilita o controle de versões de bancos de dados relacionais como MySQL, PostgreSQL e SQLite.

Algumas aplicações:

  • Versionamento e controle de alterações no banco de dados
  • Manutenção de esquemas de banco de dados em ambientes colaborativos
  • Facilitação de migração de dados e estrutura de tabelas entre diferentes ambientes
  • Gerenciamento de mudanças de esquema ao longo do tempo

Dicas para quem está começando

  • Utilize o comando sequelize-cli migration:generate para criar migrations automaticamente.
  • Não se esqueça de definir a função down para desfazer alterações em caso de erro.
  • Use o versionamento de migrations para evitar conflitos no banco de dados durante o desenvolvimento.
  • Tenha um banco de dados de teste para rodar suas migrations antes de aplicá-las em produção.
  • Verifique se o nome das migrations segue um padrão claro para facilitar o rastreamento das mudanças.

Contribuições de Lucas Fernandes

Compartilhe este tutorial: Como criar migrations no Sequelize?

Compartilhe este tutorial

Continue aprendendo:

Como fazer consultas NoSQL no Node.js?

O Node.js permite fazer consultas NoSQL, com o MongoDB sendo uma das opções mais populares, usando a biblioteca Mongoose para interagir com dados.

Tutorial anterior

Como lidar com conexões de banco de dados no Node.js?

Gerenciar conexões com bancos de dados no Node.js é essencial para garantir a integridade e performance das operações de leitura e escrita.

Próximo tutorial