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 }
のようですが、これは本番データベースでは問題ありません。
変更が必要なときにスキーマを適切に更新する方法を知っている人はいますか?
Sequelizeの移行を実装する必要があります。
http://docs.sequelizejs.com/manual/tutorial/migrations.html
これらにより、開発者、ステージング、および本番データベースを既知の状態間で移行できます。
より速い方法は、{alter: true}
オプションを使用することです。
参照: https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-sync