Какова роль миграционных скриптов в TypeORM и как создать и запустить миграции в приложении NestJS?
Миграционные скрипты в TypeORM играют важную роль в управлении изменениями в структуре базы данных в течение жизненного цикла приложения. Миграции позволяют вам отслеживать изменения схемы базы данных и применять их последовательно в различных средах (например, на локальном компьютере разработчика, в тестовой среде и на сервере).
Зачем нужны миграции?
Как создать и запустить миграции в NestJS?
Для работы с миграциями в NestJS вам потребуется настроенный проект с использованием библиотеки TypeORM. Перед началом убедитесь, что у вас установлены необходимые зависимости:
npm install --save typeorm @nestjs/typeorm
Шаг 1: Настройка подключения к базе данных
В файле app.module.ts
настройте подключение к базе данных, указав необходимые параметры:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres', // тип базы данных
host: 'localhost',
port: 5432,
username: 'your_username',
password: 'your_password',
database: 'your_database',
entities: [__dirname + '/**/*.entity{.ts,.js}'],
migrations: [__dirname + '/migrations/**/*{.ts,.js}'],
synchronize: false, // обязательно устанавливайте false при использовании миграций
}),
],
})
export class AppModule {}
Шаг 2: Создание миграции
Чтобы создать новую миграцию, используйте команду CLI TypeORM или создайте файл миграции вручную. Пример создания миграции с помощью CLI:
npx typeorm migration:create -n CreateUserTable
Это создаст файл миграции в папке, указанной в параметре migrations
. Откройте созданный файл и добавьте ваши изменения. Пример миграции для создания таблицы пользователей:
import { MigrationInterface, QueryRunner, Table } from 'typeorm';
export class CreateUserTable1612345678901 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: 'user',
columns: [
{
name: 'id',
type: 'int',
isPrimary: true,
isGenerated: true,
},
{
name: 'name',
type: 'varchar',
},
{
name: 'email',
type: 'varchar',
isUnique: true,
},
],
}),
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.dropTable('user');
}
}
Шаг 3: Запуск миграции
После того как вы создали миграцию, вы можете ее запустить, используя следующую команду:
npx typeorm migration:run
Эта команда применит все миграции, которые еще не были выполнены.
Шаг 4: Откат миграции
Если вы хотите откатить миграцию, используйте команду:
npx typeorm migration:revert
Эта команда вернет последнюю выполненную миграцию.
Заключение
Использование миграций в TypeORM значительно упрощает процесс управления схемой базы данных. Это особенно полезно при работе над проектами в команде, так как позволяет поддерживать согласованность и упрощает работу с изменениями базы данных. Теперь, когда вы знаете, как создавать и управлять миграциями в NestJS, вы можете без опасений вносить изменения в структуру своей базы данных.