Jua*_*los 8 class-validator nestjs class-transformer
我有一个 NestJS 项目,其中同时使用类验证器和类转换器,并且我需要在类验证器抛出错误之前执行类转换器。
给定以下课程:
export class CreateProfileDto {
@IsString()
@Expose({ name: 'name' })
profileName!: string;
@IsBoolean()
@Expose({ name: 'active'})
profileActive!: boolean;
}
Run Code Online (Sandbox Code Playgroud)
我需要用属性名称而不是属性 profileName 来公开错误,其他属性也是如此。
有什么直接的想法来管理这个吗?无法要求前端向我发送具有不同名称的属性,这就是我需要调整它们的原因。
我想通过管道来做到这一点,但在错误爆发之前无法使用它。
当前错误格式:
{
"statusCode": 400,
"error": "Bad Request",
"message": [
{
"target": {
"profileName": 1
},
"value": 1,
"property": "profileName",
"children": [],
"constraints": {
"isString": "profileName must be a string"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
所需的错误格式:
{
"statusCode": 400,
"error": "Bad Request",
"message": [
{
"target": {
"name": 1
},
"value": 1,
"property": "name",
"children": [],
"constraints": {
"isString": "name must be a string"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
小智 0
ValidationOptions这意味着一些额外的工作,但您可以通过将对象传递给装饰器来个性化错误消息
export class CreateProfileDto {
@IsString({ message: 'name must be a string' })
@Expose({ name: 'name' })
profileName!: string;
}
Run Code Online (Sandbox Code Playgroud)
传递函数也是一种选择:
export class CreateProfileDto {
@IsString({ message: () => 'name must be a string' })
@Expose({ name: 'name' })
profileName!: string;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2612 次 |
| 最近记录: |