Как изменить сиквелизацию миграций - PullRequest
0 голосов
/ 31 декабря 2018

когда я изменяю свою модель и файл миграции и запускаю sequelize db: migrate: undo, а затем sequelize db: migrate, изменения не будут внесены в таблицу базы данных.

Вместо этого изменения влияют на последний файл миграции/ файл модели.

1 Ответ

0 голосов
/ 31 декабря 2018

Этот вопрос похож на этот здесь: Как добавить столбец в дальнейшем существующей модели .

Но в любом случае миграция - это просто набор инструкций с использованием 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")
  }
};
...