Sequelize Js将偏执配置添加到现有表中

时间:2014-12-04 11:10:36

标签: javascript node.js sequelize.js

我创建了一个没有偏执选项的表,我现在想要改变该表的定义以使用偏执狂。

我不想重新创建数据库,因为它已经在生产中。 我怎么能用迁移来做到这一点?

我应该将addColumn与deletedAt一起使用,只是将偏执定义添加到模型中,还是有更好的方法?

2 个答案:

答案 0 :(得分:5)

我使用迁移添加了deletedAt字段,如下所示:

"use strict";

module.exports = {
  up: function(migration, DataTypes, done) {
    // add altering commands here, calling 'done' when finished

      migration.addColumn(
          'mytablename',
          'deletedAt',
          {
              type: DataTypes.DATE,
              allowNull: true,
              validate: {
              }
          }
      );
    done();
  },

  down: function(migration, DataTypes, done) {
    // add reverting commands here, calling 'done' when finished
    migration.removeColumn('mytablename', 'deletedAt');
    done();
  }
};

并添加了配置:

 paranoid: true,

到我的模特

似乎有效。

有没有人有更好的解决方案?

答案 1 :(得分:4)

小更新。

根据 sequelize 版本 6.4.0(我目前使用的),迁移如下所示:

    module.exports = {
        up: (queryInterface, Sequelize) => {
            return queryInterface.addColumn(
                'TABLE_NAME',
                'deletedAt',
                {
                    allowNull: true,
                    type: Sequelize.DATE
                })
        },
    
        down: (queryInterface, Sequelize) => {
            return queryInterface.removeColumn('TABLE_NAME', 'deletedAt')
        }
    };

我的意思是不需要 done 方法。