Задать вопрос
@lorenzo_lavantelli

Допустимо ли внедрить use-cases в Express.js с архитектурой MVC?

Привет! У меня проект на Express.js устроен по классическому MVC. Контроллеры принимают HTTP‑запрос, вызывают методы из папки services, а сервисы уже выполняют всё необходимое с данными (CRUD, расчёты, запись в БД), также делают валидации и проверки. При этом в сервисах постоянно дублируются одни и те же шаги, по типу проверка регистрации, забанен ли юзер перед выполнением основной логики.

Чтобы убрать повторяющийся код, я хочу добавить слой Use Case. В нём каждая функция (например, createOrder, cancelOrder, addItemToCart) будет проверять пользователя (зарегистрирован ли, забанен ли), вызывать чистые методы сервисов для работы с данными и возвращать результат контроллеру.

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

Был вариант выносить проверки, забанен или зареган юзер, в миддлвари, но как мне говорили туда нельзя пихать бизнес логику. Также, это будет неудобно, если я допустим захочу вызвать метод из сервиса через rabbitmq. Миддлвари просто минуются.

Насколько в Express.js (при архитектуре MVC) приемлем такой подход с выделенным слоем Use Case? Существуют ли устоявшиеся практики для решения подобной задачи, или лучше использовать другой способ, чтобы избежать дублирования логики в сервисах? Заранее спасибо.
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы