Последовательные миграции должны сохранять файлы модели в соответствии с вашей базой данных?

Я использовал sequelize cli для начальной загрузки простого проекта и создания модели node_modules/.bin/sequelize model:generate --name User --attributes email:string. Я перенес это без проблем.

Затем я создал следующий файл миграции, чтобы добавить ненужное ограничение для атрибута электронной почты пользователя.

updateEmail migration

const models = require("../models")

module.exports = {
  up: (queryInterface, Sequelize) => {
      return queryInterface.changeColumn(models.User.tableName, 'email',{
        type: Sequelize.STRING,
        allowNull: false,
      });
    },

  down: (queryInterface, Sequelize) => {
      return queryInterface.changeColumn(models.User.tableName, 'email',{
        type: Sequelize.STRING,
      });
    },
};

Схема базы данных обновлена, чтобы добавить ограничение, но файл модели не сделал. Есть ли способ автоматически обновлять файлы модели, когда вы делаете миграцию?

14
Jeffrey Kandel 7 Мар 2018 в 23:56

1 ответ

Лучший ответ

Есть ли способ автоматически обновлять файлы модели во время миграции?

К сожалению нет. Существует нет уровня синхронизации между моделями и миграцией Sequelizeize, за исключением их начального создания от sequelize model:create. Тем не менее, рабочий процесс, предложенный в этом вопросе, заключается в том, что обновления должны распространяться из моделей на модели . Это немного путает меня, так как как правило, миграции должны быть автоматически созданы из изменений в модели, не обязательно наоборот.

Постоянно возникали открытые проблемы с отслеживанием этих функций, на которые вам может быть полезно подписаться:

Предложения / решения сообщества:

Обратитесь к https://stackoverflow.com/a/28431648/8954866 Как предложено, обходной путь состоит в том, чтобы повторно создать модели с использованием sequelize-cli при введении простых изменений. Тем не менее, существуют четкие ограничения этой методологии, так как многие конфигурации невозможно определить из таких ассоциаций.

Кроме того, существует пакет npm sequelize-auto-migrations, который поддерживает генерирует миграции, однако это не кажется слишком активным проектом.

Вывод:

Следует ли Sequelize migrations обновлять файлы модели?

Sequelize / sequelize-cli еще не поддерживает эту функцию.

Следует ли ORM создавать инструменты для автоматического создания миграций? Да, это желаемая функциональность, поскольку в противном случае разработчики будут вынуждены нарушить такие принципы, как DRY , и использовать одну и ту же логику в разных файлах.

24
vapurrmaid 12 Апр 2018 в 15:38