¿Como modificar la estructura de una tabla con sequelize sin borrar los datos?

publicado por: Anonymous

Tengo una modelo hecho con sequelize, no puedo borrar los datos de la tabla institucion, pero ahora debo añadirle un campo jornada.

Ya probé sequelize.sync pero no modifica la estructura de la tabla.
y sequelize.sync({force:true}) borraria todos los datos.

Es importante que no borre nada ya que es una base de datos que a medida que el proyecto cresca debe ir modificandoce.

solución

Usando migraciones es la manera más recomendada si estás en producción. Para realizar una migración simplemente necesitas escribir un archivo que exporte un objeto con dos funciones:

  • up: transforma el estado actual de los modelos.
  • down: revierte alguna funcionalidad específica.

Nota: este fichero debe estar en el directorio migrations en la raíz del proyecto.

Estas funciones reciben como parámetro un objeto de tipo QueryInterface y una instancia de Sequelize. Para realizar cualquier tipo de cambio te interesa hacerlo en la función up.

Para cambiar un tipo de columna basta utilizar el método changeColumn:

module.exports = {
  up(queryInterface, sequelize) {
    return queryInterface.changeColumn('nombreModelo', 'nombreAtributo', {
      type: sequelize.<nuevo tipo>,
      // otros cambios
    });
  },
};

Finalmente debes hacer uso del CLI para correr tu migración:

Nota: instala el paquete sequelize-cli si aún no lo tienes.

sequelize db:migrate

Cuando termine el proceso, tu columna ya debe estar migrada. Como recomendación final, consultar la documentación.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *