2
respostas

[Dúvida] Criei um novo campo para Turmas e não consigo repercutir no banco

Criei um campo chamado "name" na model de turmas e testei fazer undo nas migrations e nos seeds e refazer o processo, entretanto não surtiu efeito.

Qual seria a forma correta de se acrescentar um campo após já a criação do banco? E como fazer?

2 respostas

Mais fácil do que pensei, lendo a documentação alguns minutos depois entendi melhor para que servem as migrations e vou deixar aqui descrito caso alguém também precise.

Gere uma nova migration com o nome da modificação que quer fazer, no meu caso:

npx sequelize migration:create --name add_name_to_class

Altere dentro da migration gerada a modificação que deseja, no meu caso adicionar uma nova coluna ficando assim:

'use strict';

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up (queryInterface, Sequelize) {
    await queryInterface.addColumn('Classes', 'name', { 
      type: Sequelize.STRING,
      allowNull: true 
    });
  },

  async down (queryInterface, Sequelize) {
    await queryInterface.removeColumn('Classes', 'name');
  }
};

Obs: importante adicionar o "allowNull:true" para possibilitar que seja nulo este campo se você já tiver dados nesta tabela.

Após isto rode para migrar: npx sequelize db:migrate

E isto irá criar um novo campo na tabela.

Oi, Gregory, tudo bom?

Que bacana que você encontrou a solução e ainda compartilhou aqui! Vai ajudar muitos outros alunos e alunas :)

Continue assim. Abraços e bons estudos!