Saltar al contenido

¿Cómo agregar una columna en el modelo existente de Sequelize?

Solución:

Para agregar nuevos campos a la tabla, debemos usar el esqueleto de migración como se muestra a continuación.

sequelize migration:create --name Users

Abra el archivo de migración y agregue los siguientes códigos

module.exports = {
  up: function (queryInterface, Sequelize) {
    return [ queryInterface.addColumn(
              'Users',
              'gender',
               Sequelize.STRING
             ),
            queryInterface.addColumn(
             'Users',
             'age',
             Sequelize.STRING
          )];
  },

  down: function (queryInterface, Sequelize) {
    // logic for reverting the changes
  }
};

Entonces solo ejecuta la migración

node_modules/.bin/sequelize db:migrate

Nota: El pasado queryInterface El objeto se puede utilizar para modificar la base de datos. los Secuela El objeto almacena los tipos de datos disponibles como STRING o INTEGER.

Lista completa de métodos en la interfaz de consulta

Espero que esto ayude. Si tiene algún problema, hágamelo saber.

La respuesta de Suvethan es correcta, pero el fragmento de código de migración tiene un error menor. Las migraciones de secuela esperan que se devuelva una promesa, que se indica en un comentario en el esqueleto de migración generado:

Add altering commands here.
Return a promise to correctly handle asynchronicity.

Example:
return queryInterface.createTable('users', { id: Sequelize.INTEGER });

Por lo tanto, devolver una serie de promesas puede conducir potencialmente a resultados inesperados porque no hay garantía de que todas las promesas se hayan resuelto antes de pasar a la siguiente migración. Para la mayoría de las operaciones, es poco probable que surja algún problema, ya que la mayoría de las cosas se completarán antes de que Sequelize cierre el proceso. Pero creo que es mejor prevenir que curar cuando se trata de migraciones de bases de datos. Aún puede aprovechar la variedad de promesas; solo necesitas envolverlo en un Promise.all llama.

El ejemplo de Suvethan, pero con Promise.all:

module.exports = {
  up: function (queryInterface, Sequelize) {
    return Promise.all([
      queryInterface.addColumn(
        'Users',
        'gender',
         Sequelize.STRING
       ),
      queryInterface.addColumn(
        'Users',
        'age',
        Sequelize.STRING
      )
    ]);
  },

  down: function (queryInterface, Sequelize) {
    // logic for reverting the changes
  }
};
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *