Usa*_*hir 4 javascript typeorm nestjs
我是Nest.js的初学者,我发现它非常好。我阅读了官方文档,并了解了DTO。当我的身体像这样:
{
"username" : "username",
"password" : "password"
}Run Code Online (Sandbox Code Playgroud)
然后我可以user.dto.ts像这样简单地创建:
import { IsNotEmpty } from 'class-validator';
export class UserDTO {
@IsNotEmpty()
username: string;
@IsNotEmpty()
password: string;
}Run Code Online (Sandbox Code Playgroud)
然后,我在控制器中像这样使用它。
@Post('login')
@UsePipes(new ValidationPipe())
login(@Body() data: UserDTO) {
return this.userService.login(data);
}Run Code Online (Sandbox Code Playgroud)
但是我的问题是,如果我的身体是这样的话。
{
"data": {
"username": "username",
"password": "password",
}
}Run Code Online (Sandbox Code Playgroud)
那么我需要在user.dto.ts文件中进行哪些修改才能使其正常工作?谢谢
答案是:您不需要修改DTO。
@Body()装饰器还接受一个可选参数:@Body(path?: string)。
这里的关键是要了解做什么@Body()。@Body()没有任何参数将返回req.body对象。@Body('path')将会返回req.body.path (或req.body['path']。有了这些知识,您就可以传递'data',@Body('data')它将返回req.body.data,它将是您的)DTO。
@Post('login')
@UsePipes(new ValidationPipe())
login(@Body('data') data: UserDTO) {
// data will be your req.body.data which is your UserDTO
return this.userService.login(data);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4030 次 |
| 最近记录: |