我正在开发一个 Express 项目并使用 Sequelize 作为我的 ORM,并且我定义了以下 Sequelize 模型:
Field.init({
type: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
}
}, {
sequelize,
underscored: true,
tableName: "field",
});
现在假设我想限制类型列的字符数并创建如下所示的迁移(
async up
是此处的重点):
'use strict';
const { Transaction } = require('sequelize');
module.exports = {
async up(queryInterface, Sequelize) {
return queryInterface.sequelize.transaction({
isolationLevel: Transaction.ISOLATION_LEVELS.SERIALIZABLE,
}, async t => {
await queryInterface.changeColumn('field', 'type', {
type: Sequelize.STRING(400),
allowNull: false,
},
{ transaction: t },
);
});
},
async down(queryInterface, Sequelize) {
return queryInterface.sequelize.transaction({
isolationLevel: Transaction.ISOLATION_LEVELS.SERIALIZABLE,
}, async t => {
await queryInterface.changeColumn('field', 'type', {
type: Sequelize.STRING,
allowNull: false,
},
{ transaction: t },
);
});
}
};
该列还会保留
unique
和 allowNull
约束吗?或者这些会被删除,因为在迁移中我只列出了我的列的新类型?