Secuela: Cambiando el esquema del modelo en producción.
Estamos usando el ormsequelize.js y han definido un modelo como tal:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
}
}, {
paranoid: true
});
return Source;
};
Esto se implementa en producción y se sincroniza con la base de datos usandosequelize.sync
. El siguiente paso, agregamos un parámetro:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
location: {
type: DataTypes.STRING
}
}, {
paranoid: true
});
return Source;
};
Sin embargo, al desplegar a producciónsequelize.sync
No agrega este nuevo parámetro. Esto es porquesync
hace un:
CREATE TABLE IF NOT EXISTS
Y realmente no actualiza el esquema si la tabla existe. Esto esanotado en su documentación.
La única opción parece ser{ force: true }
Sin embargo, esto no está bien para una base de datos de producción.
¿Alguien sabe cómo actualizar correctamente el esquema cuando los cambios son necesarios?