РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpTrInr 47 of 201 menu
◀ ▶

Введение в транзакции в Nest

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

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

В Nest источник данных регистрирует модуль базы и приходит в класс через конструктор так же, как сервис. Сущности подключают в модуле темы через TypeOrmModule.forFeature, а корень поднимает PostgreSQL с autoLoadEntities и synchronize для базы site.

Дальше разберём границу блока, откат при ошибке, перенос логики в сервис, связанную запись в том же callback и явный уровень изоляции. На сайте с материалами это помогает не оставлять полуготовые наборы строк после сбоя на втором шаге.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить