Как правильно обрабатывать ошибки базы данных в API?

Middle
301 просмотров
AFK Offer AI

Слои обработки: 1) Репозиторий ловит DB ошибки и конвертирует в domain ошибки (UniqueConstraintError → EmailAlreadyExists). 2) Сервис обрабатывает domain ошибки. 3) Контроллер конвертирует в HTTP ответы. Prisma: catch (e) { if (e instanceof PrismaClientKnownRequestError && e.code === "P2002") throw new ConflictError("Email already exists") }. Никогда не возвращай raw DB ошибки клиенту — они содержат детали схемы. Логируй полную ошибку, клиенту — generic message. Транзакционные ошибки (deadlock) — ретраить автоматически.

Следующий вопрос

Как настроить тестовую базу данных в Node.js проекте?