просто генерит Server Internal Error — 500
А как мне это обработать, чтобы ошибки выкидывались нормальные? В случае, когда не находится - 404, User Not Found; И так далее.
Оборачивать метод репозитория юзера в трай-кетч? Но тогда в случае ошибки он передаст 500 тот же, который вылетит.
И сложно будет классифицировать характер ошибки.
И этот ход не выглядит лаконичным.
Тайпорм обычно возвращает undefined, если не находит объект. Похоже, что ты используешь Nest, который и кидает ошибку 500, которая возникает в приложении, если не обработать undefined
У тебя очень много вариантов, в зависимости от сложности твоего приложения выбирай, что больше подходит. В самом простом случае можно бросать ошибку 404, если поиск юзера вернул undefined прямо из метода репозитория. Делать это не рекомендуется, ибо у тебя репозиторий в этом случае знает про http-коды, текут слои. Можно создать кастомный UserNotFoundError, бросить его, поймать в сервисе или контроллере и пробросить нестовский NotFoundError выше, чтобы сгенерировался ответ сервера с 404. Либо можно возвращать из репозитория Either<UserNotFoundError, UserEntity>, если не нравится баскетболить исключениями
Спасибо; Да использую нест.
Обсуждают сегодня