【发布时间】:2021-08-27 06:33:39
【问题描述】:
我正在使用 https://www.npmjs.com/package/nestjs-joi 和 https://www.npmjs.com/package/joi 来验证我的 NestJS 应用的请求。
我有一个创建用户的架构
@JoiSchemaOptions({
allowUnknown: false,
})
export class UserDto {
@JoiSchema(Joi.string().required())
@JoiSchema([CREATE], Joi.string().required())
@JoiSchema([UPDATE], Joi.string().optional())
name: string;
@JoiSchema(Joi.string().required())
@JoiSchema([CREATE], Joi.string().required())
@JoiSchema([UPDATE], Joi.string().optional())
surname: string;
@JoiSchema([CREATE], Joi.string().email({ minDomainSegments: 2 }).required())
email: string;
@JoiSchema([CREATE], Joi.string().min(6).required())
password: string;
}
用户控制器:我像 netsjs-joi 所说的那样使用它,将 UserDto 作为控制器中的参数,我想也许我需要一些错误处理程序并按照我的意愿准备我的错误,但是有什么东西不在Joi 中的框
import {
Controller,
Get,
Param,
BadRequestException,
Post,
Body,
} from '@nestjs/common';
import { UserService } from './user.service';
import { UserDto } from './dto/user.dto';
@Controller('user')
export class UserController {
constructor(private userService: UserService) {}
@Post()
create(@Body() createData: UserDto): string {
console.log(JSON.stringify(createData, null, 2));
return 'something';
}
}
当我用这个正文发送请求时
{
"name": "name",
"surname": "",
"email": "error",
"password": "error"
}
我收到错误
{
"statusCode": 400,
"message": "Request validation of body failed, because: \"surname\" is not allowed to be empty, \"email\" must be a valid email, \"password\" length must be at least 6 characters long",
"error": "Bad Request"
}
但我想得到例如这样的东西
[ {
"statusCode": 400,
"message": "Request validation of body failed, because: \"surname\" is not allowed to be empty,",
"error": "Bad Request",
"surname": "Surname is not allow to be empty",
},
{
"statusCode": 400,
"message": "Request validation of body failed, because: \"email\" must be a valid email",
"error": "Bad Request",
"email": "Email must be a valid email"
},
...
]
有什么想法吗?谢谢!))
【问题讨论】:
标签: javascript node.js typescript nestjs joi