Перейти к основному содержанию

Как работают миграции?

Неофициальный Бета-перевод

Эта страница переведена 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-запросов и их запуска при необходимости. Это место называется "миграциями".