Как сделать миграции и сиды БД в NestJS

В разработке веб-приложений наряду с работой с API необходимо также обеспечить правильную организацию базы данных. Вот где пригодится использование миграций и сидов — инструментов, которые позволяют создавать и заполнять таблицы в базе данных с помощью кода.

В современных приложениях часто выбирают nest.js в качестве фреймворка для разработки на Node.js. С его помощью можно легко настраивать и поддерживать миграции и сиды для баз данных различных типов — от SQL до MongoDB.

Миграции позволяют создавать и изменять схему базы данных, сохраняя историю всех изменений. Они важны как для создания базы данных приложения, так и при внесении изменений в уже существующую. Сиды, в свою очередь, используются для создания начальных записей в таблицах базы данных, например, для заполнения справочников или тестовых данных.

Для реализации миграций и сидов в nest.js существуют специальные пакеты, такие как TypeORM или Mongoose. Они предоставляют готовые инструменты для работы с БД и упрощают создание и применение миграций и сидов. При использовании этих пакетов достаточно описать структуру таблицы или схему документа, а затем выполнить соответствующую команду для создания или применения миграции или сида.

Подготовка к миграциям БД в nestjs

Один из важных аспектов, связанных с разработкой приложения на nestjs, это создание и управление миграциями базы данных. Миграции БД позволяют определить изменения в структуре БД и применять их автоматически, что упрощает процесс обновления приложения и переноса на новые среды разработки.

Перед тем, как приступать к созданию миграций, необходимо настроить соединение с базой данных в файле app.module.ts. В этом файле определен провайдер для подключения к БД, который может быть настроен с использованием различных баз данных, таких как PostgreSQL, MySQL, MongoDB и другие.

Когда соединение с базой данных настроено, необходимо создать миграцию. Для этого можно воспользоваться командой nest g migration имя_миграции. После выполнения этой команды будет создан файл миграции в директории migrations в корне проекта. В этом файле определены методы up и down, которые отвечают за применение и откат изменений соответственно.

Для применения миграции необходимо выполнить команду nestjs:migration:run. При этом nestjs автоматически применит все непримененные миграции, обновит структуру БД и запишет информацию о миграциях в таблицу миграций. Если нужно откатить миграцию, можно воспользоваться командой nestjs:migration:revert.

Важно отметить, что при создании миграций и сидов БД в nestjs необходимо следить за сохранением данных пользователей и других важных данных, чтобы они не были потеряны при обновлении структуры БД. Для этого можно использовать алтернативные методы применения изменений в базе данных или создавать бэкап данных перед применением миграций.

В результате правильной подготовки и использования миграций и сидов БД в nestjs, разработчик получает удобный способ управления изменениями в структуре БД, что упрощает развертывание приложения на новых средах и обеспечивает сохранение ценных данных.

Установка необходимых пакетов

Прежде чем приступить к созданию миграций и сидов в NestJS, необходимо установить несколько пакетов. В этом разделе я расскажу вам, как установить все необходимые зависимости.

Первым шагом является установка пакета TypeORM. TypeORM является одним из самых популярных инструментов для работы с базами данных в NestJS. Вы можете установить его при помощи следующей команды:

  • npm install --save @nestjs/typeorm typeorm

После установки TypeORM, вам также понадобится драйвер базы данных, с которой вы собираетесь работать. Например, если вы планируете использовать PostgreSQL, вам нужно установить пакет pg:

  • npm install --save pg

Если вы собираетесь использовать другую базу данных, выберите соответствующий драйвер и установите его с помощью npm команды.

Также, для работы с миграциями и сидами в NestJS, вам понадобятся еще два пакета: typeorm-cli и ts-node. Вы можете их установить при помощи следующих команд:

  • npm install -g typeorm
  • npm install -g ts-node

После установки всех необходимых пакетов вы будете готовы приступить к созданию и выполнению миграций и сидов в NestJS.

Настройка конфигурации для миграций БД

Первым шагом требуется установить необходимые зависимости. Для этого введите следующую команду:

npm install --save @nestjs/typeorm typeorm

Затем, в файле src/app.module.ts следует добавить необходимые импорты и провайдеры, чтобы включить поддержку TypeORM:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
// настройки подключения к базе данных
}),
],
})
export class AppModule {}

В объекте настроек подключения к базе данных требуется указать несколько ключевых параметров:

  • type: тип базы данных (например, mysql, postgres, sqlite и т.д.);
  • host: хост базы данных;
  • port: порт базы данных;
  • username: имя пользователя;
  • password: пароль пользователя;
  • database: название базы данных.

Различные дополнительные опции и настройки, такие как entities (список сущностей), migrations (путь к миграциям) и migrationsRun (флаг, указывающий на необходимость запуска миграций при старте приложения), также могут быть указаны в настройках подключения к базе данных.

После настройки конфигурации подключения к базе данных в файле src/migration/migration.ts можно создавать и выполнять миграции для базы данных. Используйте команды TypeORM, такие как create и run, чтобы создать и применить миграцию соответственно.

Таким образом, настройка конфигурации для миграций базы данных в NestJS осуществляется с помощью TypeORM и подразумевает указание параметров подключения к базе данных, а также других дополнительных опций, таких как список сущностей и путь к миграциям.

Описание процесса создания миграций

Для создания миграций в NestJS необходимо выполнить следующие шаги:

  1. Установите TypeORM, если он еще не установлен, используя команду npm install typeorm.
  2. Создайте новую миграцию с помощью команды npx typeorm migration:create -n ИмяМиграции, где ИмяМиграции — это название вашей миграции.
  3. Отредактируйте созданный файл миграции в папке migrations. В этом файле вы определите параметры изменений, которые должны быть выполнены в БД.
  4. Выполните миграцию с использованием команды npx typeorm migration:run. Это применит изменения, указанные в миграции, к БД.

При создании миграции необходимо определить изменения, которые должны быть выполнены в БД. Это может быть создание новых таблиц, изменение таблиц или добавление новых столбцов. TypeORM предоставляет различные методы и классы для определения этих изменений. Например, с помощью класса Table вы можете определить новую таблицу, а с помощью метода addColumn определить новый столбец.

После создания миграции ее можно применить к вашей БД с помощью команды npx typeorm migration:run. Это применит изменения, указанные в миграции, и обновит структуру вашей БД.

Всегда помните, что миграции должны быть созданы и применены последовательно. Если вы внесли изменения в код, и вам нужно сделать новую миграцию, убедитесь, что все предыдущие миграции уже были применены к вашей БД перед применением новой.

Использование сидов для заполнения БД тестовыми данными

Чтобы использовать сиды в NestJS, вам необходимо создать файл сидов, обычно в папке «seeds» внутри вашего проекта. В этом файле вы можете написать код, который будет заполнять таблицы в вашей базе данных данными.

Пример кода для создания сидов:

import { Seeder, Factory } from 'typeorm-seeding';
import { Connection } from 'typeorm';
import { User } from './entities/user.entity';
export default class CreateUsers implements Seeder {
public async run(factory: Factory, connection: Connection): Promise<any> {
await factory(User)().createMany(10);
}
}

Затем вы можете использовать функцию run из класса сидов для выполнения вашего кода заполнения базы данных в файлах миграции или в других местах вашего приложения.

Для запуска сидов можно использовать специальную команду в вашем скрипте запуска вашего приложения:

typeorm seed:run

После выполнения этой команды, ваша база данных будет заполнена тестовыми данными, указанными в ваших сидах.

Использование сидов для заполнения БД тестовыми данными позволяет вам создавать повторяемые и контролируемые сценарии тестирования. Это особенно полезно в ситуациях, когда вам нужно проверить функциональность вашего приложения с определенными данными.

Оцените статью