gpt4 book ai didi

express - 如何修改 sequelize 迁移

转载 作者:行者123 更新时间:2023-12-03 22:16:44 25 4
gpt4 key购买 nike

当我更改模型和迁移文件并运行 sequelize db:migrate:undo 然后 sequelize db:migrate 时,不会对数据库表进行更改。

相反,更改会影响最后一个迁移文件/模型文件。

最佳答案

这个问题类似于这里的这个问题:How to add column in sequelize existing model

但无论如何,迁移只是使用 queryInterface 方法的一组指令,例如,当您使用 cli 生成迁移时使用的默认方法是 (createTable) 方法。
如果要以任何方式更改表,则需要使用另一种方法,例如( renameColumn :重命名列,changeColumn :更改列数据类型等)

例如,如果我想在已经存在的(迁移的)name 表上将名为 firstName 的列重命名为 Users,我将创建一个新的迁移文件来修改它,它看起来像这样:

'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.renameColumn('Users', 'name', 'firstName', {
type: Sequelize.STRING,
})
},
down: (queryInterface, Sequelize) => {
return queryInterface.renameColumn('Users', 'firstName', 'name', {
type: Sequelize.STRING,
})
}
};

这是 向同一个表 Users 添加一个新列 (lastName) 的示例:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn('Users', 'lastName', {
type: Sequelize.STRING
})
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn("Users", "lastName")
}
};

关于express - 如何修改 sequelize 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53982573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com