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

Введение в команды и запросы в Nest

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

Подход CQRS держит изменение и чтение на разных дорожках. Команда описывает намерение что-то изменить, запрос просит только данные, а шина доставляет объект нужному обработчику. В Nest для этого ставят пакет @nestjs/cqrs, корневой модуль подключает CqrsModule.forRoot, а классы обработчиков записывают в провайдеры рядом с контроллером или сервисом.

CommandBus принимает команды, QueryBus принимает запросы, EventBus рассылает события после успешного шага. Обработчик команды меняет массив или другую структуру в памяти процесса NodeJS, обработчик запроса только возвращает снимок, слушатель события реагирует отдельно, не смешивая ответ страницы с побочным кодом.

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

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