Давайте иметь этот контроллер в проекте Nest JS:
@Post('resetpassword')
@HttpCode(200)
async requestPasswordReset(
@Body() body: RequestPasswordResetDTO,
): Promise<boolean> {
try {
return await this.authService.requestPasswordReset(body);
} catch (e) {
if (e instanceof EntityNotFoundError) {
// Throw same exception format as class-validator throwing (ValidationError)
} else throw e;
}
}
Определение Dto:
export class RequestPasswordResetDTO {
@IsNotEmpty()
@IsEmail()
public email!: string;
}
Я хочу выдать ошибку в формате ValidationError
(свойство, значение, ограничения, и т. д. c), когда this.authService.requestPasswordReset(body);
создает исключение EntityNotFoundError
.
Как я могу создать эту ошибку вручную? Эти ошибки просто выдаются, когда проверка DTO по class-validator
завершается неудачно. И это могут быть просто stati c проверки, а не asyn c проверки базы данных.
Таким образом, окончательный формат ответа API должен быть, например:
{
"statusCode": 400,
"error": "Bad Request",
"message": [
{
"target": {
"email": "not@existing.email"
},
"value": "not@existing.email",
"property": "email",
"children": [],
"constraints": {
"exists": "email address does not exists"
}
}
]
}
Мне нужно, чтобы он был последовательная обработка ошибок:)