Saltar al contenido

Comprensión de las migraciones y semillas de la base de datos de Sequelize

Solución:

En mi opinión, una sembradora es algo que está destinado a ejecutarse solo una vez, mientras que la migración es algo que agrega capa por capa a su estructura de base de datos continuamente.

Usaría sembradoras para completar algunas búsquedas u otros datos que probablemente no van a cambiar, o datos de prueba. En el sequelize docs, se dice que “los archivos semilla son algunos cambios en los datos que se pueden usar para completar la tabla de la base de datos con datos de muestra o datos de prueba”.

Si desea realizar algunas actualizaciones de datos dinámicos cuando la estructura de los datos ya ha cambiado, puede ejecutar consultas sin procesar directamente en sus migraciones si es necesario. Entonces, si usted, por ejemplo, agregó alguna columna en el up método, puede actualizar las filas en la base de datos de acuerdo con su lógica empresarial, por ejemplo:

// Add column, allow null at first
await queryInterface.addColumn("users", "user_type", {
    type: Sequelize.STRING,
    allowNull: true
});

// Update data
await queryInterface.sequelize.query("UPDATE users SET user_type="simple_user" WHERE is_deleted = 0;");

// Change column, disallow null
await queryInterface.changeColumn("users", "user_type", {
    type: Sequelize.STRING,
    allowNull: false
});

También hay una discusión interesante sobre este tema en Grupos de Google. Espero que esto te ayude.

En mi experiencia, las migraciones cambian de estructura. Sembradoras … datos de semillas. Recientemente estuve en un proyecto que no tenía sembradoras configuradas. https://sequelize.org/master/manual/migrations.html#seed-storage. Esto le permitirá configurar un archivo para que sus datos no se propaguen más de una vez. La configuración de la migración también está ahí.

¡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 *