Как работают миграции?
Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
При переходе в продакшен потребуется синхронизировать изменения моделей с базой данных.
Обычно использовать synchronize: true для синхронизации схемы в продакшене небезопасно,
когда в базе уже есть данные. Именно здесь помогают миграции.
Миграция — это просто файл с SQL-запросами для обновления схемы базы данных и применения изменений к существующей базе.
Предположим, у вас уже есть база данных и сущность Post:
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number
@Column()
title: string
@Column()
text: string
}
Ваша сущность месяцами работала в продакшене без изменений. В базе находятся тысячи постов.
Теперь вам нужно выпустить новую версию и переименовать title в name.
Как поступить?
Необходимо создать новую миграцию со следующим SQL-запросом (диалект PostgreSQL):
ALTER TABLE "post" RENAME COLUMN "title" TO "name";
После выполнения этого запроса схема базы будет готова для работы с новым кодом. TypeORM предоставляет место для написания таких SQL-запросов и их запуска при необходимости. Это место называется "миграциями".