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

Введение в события в Nest

После записи новой строки в память часто нужен ещё один шаг: отметка в журнале, счётчик или короткое уведомление. Если всё держать в одном методе, логика разрастается, а повторное использование того же шага с другого адреса превращается в копирование.

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

В Nest для этого подключают пакет @nestjs/event-emitter. Корневой модуль импортирует EventEmitterModule.forRoot, сервис получает общий эмиттер и публикует сигнал после успешного сохранения в массиве или другой структуре в памяти. Слушатели регистрируют как провайдеры и помечают метод, который должен сработать при совпадении имени сигнала.

Такой приём не требует базы и очередей: всё происходит внутри процесса NodeJS, пока живёт приложение. Он не заменяет слушатели сущностей TypeORM вокруг SQL, а дополняет сервисный слой, когда побочный шаг нужен после бизнес-операции в коде приложения.

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

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