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

Kin*_*nza 3 javascript node.js sequelize.js

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

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

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

Kin*_*nza 6

我使用迁移添加了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();
  }
};
Run Code Online (Sandbox Code Playgroud)

并添加了配置:

 paranoid: true,
Run Code Online (Sandbox Code Playgroud)

到我的模特

它似乎工作.

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

  • 我说那是首选的解决方案 (2认同)

elb*_*bik 6

小更新。

根据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')
        }
    };
Run Code Online (Sandbox Code Playgroud)

我的意思是该done方法不是必需的。