Sequelize: Alterando o esquema do modelo na produção
Estamos usando o ormsequelize.js e definimos um 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;
};
Isso é implantado para produção e sincronizado com o banco de dados usandosequelize.sync
. Próximo passo, nós adicionamos um 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;
};
No entanto, ao implantar para produçãosequelize.sync
não adiciona este novo parâmetro. Isto é porquesync
faz um:
CREATE TABLE IF NOT EXISTS
E, na verdade, não atualiza o esquema se a tabela existir. Isto éanotado em sua documentação.
A única opção parece ser{ force: true }
No entanto, isso não é bom para um banco de dados de produção.
Alguém sabe como atualizar corretamente o esquema quando as alterações são necessárias?