И как изменить свои модели данных, когда вам это нужно.
Как разработчики полного стека, мы, вероятно, все были там.
Наша модель данных MySQL изменилась, и мы должны сделать таблицы нашей базы данных более гибкими. Мы должны добавлять столбцы, удалять столбцы, редактировать имена столбцов, создавать новые таблицы — все то, что вы думали, будет закреплено в камне после того, как вы приняли требования спецификации. Ну что теперь?
Если вы используете sequenceize в качестве ORM для своей базы данных SQL, вам повезло. Я использовал MySQL.
Используя возможности пакета sequenceize-cli, вы можете сделать всю тяжелую работу за вас.
Предпосылки:
Прежде чем мы продолжим, убедитесь, что вы позаботились об установке и инициализации пакета sequelize-cli
и выполнили необходимые настройки. Этот блог предназначен только для разработчиков, которые заинтересованы в выполнении миграций в своей базе данных, но если вы хотите правильно изучить sequenceize-cli, пожалуйста, следуйте документам.
Шаг 1: Создание файла миграции
Чтобы создать миграцию с помощью sequelize-cli
, вы можете запустить:
npx sequelize-cli migration:generate --name migration-skeleton
Это создает файл в папке /migrations
, который содержит скелет, который выглядит следующим образом:
module.exports = { up: (queryInterface, Sequelize) => { // logic for transforming into the new state }, down: (queryInterface, Sequelize) => { // logic for reverting the changes } }
Перечисленные выше свойства up и down создают изменения, которые должны произойти с базой данных (в up) и код, необходимый для отмены изменения (внизу).
Вот пример, если вы хотите включить столбец в имя таблицы Users
под названием bio
и сценарий для обратной команды:
module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.addColumn( "Users", "bio", Seqeulize.STRING ) }, down: (queryInterface, Sequelize) => { return queryInterface.removeColumn( "Users", "bio" ) } }
Шаг 2: Запуск миграции
Теперь, когда вы создали файл миграции, все, что вам нужно сделать, это запустить скрипт для его реализации:
npx sequelize-cli db:migrate
После того, как вы запустили миграцию, вы официально изменили свою базу данных!
Шаг 3: Изменение вашей модели
После создания сценария миграции и его запуска не забудьте обновить предыдущую модель данных. Невыполнение этого требования заблокирует видимость изменений при выполнении запросов, даже если таблица в базе данных официально изменилась.
Итак, в этом случае мы перейдем к модели Users
и добавим:
export default (sequelize, DataTypes) => { const User = sequelize.define("User", { // previous properties name: { type: DataTypes.STRING, allowNull: false }, // new properties that we need to add after running the migration bio: { type: DataTypes.STRING, allowNull: true } }) return User; }
Вывод
И вуаля! Вы официально изменили свою модель данных с помощью миграции sequenceize-cli.