use*_*133 2 error-handling backend typescript class-validator nestjs
NestJS 控制器以及类验证器当前返回如下错误消息:
{
statusCode: 422,
message: [ 'Name is required', 'Email is required' ],
error: 'Unprocessable Entity'
}
Run Code Online (Sandbox Code Playgroud)
但我想将每条消息绑定到其相关属性,如下所示:
{
statusCode: 422,
message: { name: 'Name is required', email: 'Email is required' },
error: 'Unprocessable Entity'
}
Run Code Online (Sandbox Code Playgroud)
我的DTO:
import { IsNotEmpty } from 'class-validator';
export class CreateUserRequestDTO {
@IsNotEmpty({ message: 'Name is required' })
name: string;
@IsNotEmpty({ message: 'Email is required' })
email: string;
}
Run Code Online (Sandbox Code Playgroud)
我如何更改 NestJS 控制器/类验证器错误以返回这样的消息?
小智 6
exceptionFactory可以通过传递到 ValidationPipe 选项来修改验证错误的响应。
https://docs.nestjs.com/techniques/validation
请参阅示例实现:
app.useGlobalPipes(
new ValidationPipe({
exceptionFactory: (errors) => {
return new UnprocessableEntityException({
statusCode: 422,
error: 'Unprocessable Entity',
message: errors.reduce(
(acc, e) => ({
...acc,
[e.property]: Object.values(e.constraints),
}),
{},
),
});
},
}),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |