Мы используем orm sequelize.js и определили модель как таковую:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
}
}, {
paranoid: true
});
return Source;
};
Это развертывается для производства и синхронизации с базой данных с помощью sequelize.sync
. Следующий шаг добавим параметр:
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;
};
Однако при развертывании в производство sequelize.sync
этот новый параметр не добавляется. Это связано с тем, что sync
выполняет:
CREATE TABLE IF NOT EXISTS
И фактически не обновляет схему, если таблица существует. Это отмечено в их документации.
Единственный вариант, по-видимому, относится к { force: true }
, однако это не подходит для производственной базы данных.
Кто-нибудь знает, как правильно обновлять схему, когда необходимы изменения?