我创建了一个没有偏执选项的表,我现在想要改变该表的定义以使用偏执狂。
我不想重新创建数据库,因为它已经在生产中。 我怎么能用迁移来做到这一点?
我应该将addColumn与deletedAt一起使用,只是将偏执定义添加到模型中,还是有更好的方法?
答案 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
方法。