Детали ошибки БД утекают клиенту в ответе 500
При регистрации с уже занятой почтой клиент получает ответ:
{
"statusCode": 500,
"message": "duplicate key value violates unique constraint \"users_email_key\"",
"stack": "QueryFailedError: ..."
}
Поддержка жалуется на непонятные обращения, а безопасность — на утечку схемы БД. Как правильно перестроить обработку?
- Убрать уникальный индекс в базе и проверять занятость почты отдельным запросом перед вставкой — тогда ошибки не будет
- Оставить текст как есть, но заменить код на 400: мониторинг перестанет считать это ошибкой сервера, а причина видна клиенту
- Отдавать 200 с полем `error` и текстом драйвера, а разбор сообщения оставить на клиенте — контракт станет единообразным
- Ловить нарушение уникальности и отдавать 409 с понятным сообщением, а стектрейс писать только в лог
