Добавление / удаление поля с помощью Sequelize - PullRequest
0 голосов
/ 21 октября 2018

Я использую Sequelize-cli и у меня возникли некоторые проблемы с его использованием.

Обратите внимание, что я впервые использую Sequelize, возможно, я потерял некоторые концепции, буду очень признателен, если бы он сказал мне, что яотсутствует.

Я сделал простую модель, подобную этой:

$ sequelize model:generate --name Notes --attributes text:content

И я получил этот файл миграции:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Notes', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      content: {
        type: Sequelize.TEXT
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Notes');
  }
};

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

Должен ли я просто запустить db: migrate: undo , чтобы удалить все таблицы и обновить файл миграции и файл моделии переделать миграцию?Я думаю, что это неправильный способ использования sequelize.

Я также постоянно путаю понятие «миграция», зачем мне это использовать?

И похоже, что все данныеушел после запуска команды "migrate: undo", есть ли способ сохранить их, чтобы я мог восстановить данные после обновления схемы таблицы?

Любой совет будет очень признателен!

1 Ответ

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

Решено это путем создания новой миграции и использования queryInterface.addColumn для создания новых полей!

module.exports = {
  up: (queryInterface, Sequelize) => {
     return queryInterface.addColumn(
      'Notes',
      'title',
      Sequelize.STRING
    );
  },
   down: (queryInterface, Sequelize) => {
   return queryInterface.removeColumn(
     'Notes',
     'title'
   );
  }
};
...