26

私たちは 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

テーブルが存在する場合、実際にはスキーマを更新しません。これは、ドキュメントに記載されています

唯一のオプションは to のようですが{ force: true }、これは本番データベースには適していません。

変更が必要なときにスキーマを適切に更新する方法を知っている人はいますか?

4

2 に答える 2

28

Sequelize の移行を実装したい場合:

http://docs.sequelizejs.com/manual/tutorial/migrations.html

これらにより、既知の状態間で開発者、ステージング、および運用データベースを移行できます。

于 2013-07-23T03:54:09.440 に答える