Как изменить сиквелизацию миграций
Когда я изменяю свою модель и файл миграции и запускаю sequelize db:migrate:undo, а затем sequelize db:migrate, изменения не будут внесены в таблицу базы данных.
Вместо этого изменения влияют на последний файл миграции / файл модели.
1 ответ
Этот вопрос похож на этот здесь: Как добавить столбец в дальнейшем существующей модели.
Но в любом случае миграция - это просто набор инструкций, использующих методы queryInterface, поэтому, например, метод по умолчанию, который используется при генерации миграции с помощью cli, - это метод (createTable).
Если вы хотите каким-либо образом изменить таблицу, вам нужно использовать другой метод, например ( renameColumn: для переименования столбца, changeColumn: для изменения типа данных столбца, ..etc)
Например, если я хочу переименовать столбец с именем 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,
})
}
};
И это в примере добавления нового столбца (lastName) к той же таблице Users
:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn('Users', 'lastName', {
type: Sequelize.STRING
})
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn("Users", "lastName")
}
};