Sequelize db: миграция не обновляет модель - PullRequest
0 голосов
/ 21 октября 2018

Я создал таблицу, используя sequelize-cli, однако я забыл добавить столбец: title.

Поэтому я сгенерировал новую миграцию:

$ sequelize migration:create --name update-notes

И поместил эти коды внутри миграцииfile:

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {

    return queryInterface.addColumn(
      'Notes',
      'title',
      Sequelize.STRING
    );
  },

  down: (queryInterface, Sequelize) => {
   return queryInterface.removeColumn(
     'Notes',
     'title'
   );
  }
};

После запуска миграции и проверки схемы таблицы из БД, она работает:

$ sequelize db:migrate

Однако модель не имеет моего нового добавленного столбца:

'use strict';
// models/notes.js
module.exports = (sequelize, DataTypes) => {
  const Notes = sequelize.define('Notes', {
    content: DataTypes.TEXT    // NO 'TITLE' COLUMN
  }, {});
  Notes.associate = function(models) {
    // associations can be defined here
  };
  return Notes;
};

Чего мне не хватает?Как мне применить мои обновления к файлу модели?

А что, если предыдущие данные в таблице не совместимы с новой схемой таблицы?Это просто не удалось перенести миграцию, и разработчик решил проблему вручную?

1 Ответ

0 голосов
/ 25 октября 2018

К сожалению, с миграциями Sequelize вам нужно будет вручную обновить как модель, так и файлы миграции.Создание нового файла миграции не приведет к обновлению файла модели, и наоборот.Хотя Sequelize CLI предлагает несколько вспомогательных опций, вы, как правило, самостоятельно решаете, правильно ли определены файл модели и файл миграции.

...