我正在为我的项目使用 NestJs 框架。在我的控制器中,我接受 POST 请求,并通过 ValidationPipe 将 body 转换为我的 CreateHouseDTO。ValidationPipe 正在使用白名单和转换。
当我像这样尝试使用 JSON 的 api 时:
{
"name": "Test",
"floors": [
{
"name": "floor1",
"rooms": [
{
"name": "room1"
},
{
"name": "room2"
}
]
}
]
}
这是我的应用程序日志(console.log 输出):
CreateHouseDTO{
name:'Test',
floors[ {} ]
}
当我在嵌套对象中犯一些错误时,它甚至会验证嵌套对象。例如,如果我将Floor对象中的name属性设置为Null或不带引号的某个数字。
这是一个错误还是我做错了什么?请帮我。
我的代码:
//My DTOs
import {ValidateNested, IsString, IsArray} from "class-validator";
import {Body, Controller, Post} from "@nestjs/common";
export class CreateHouseDTO {
@IsNotEmpty()
@IsString()
public name?: string;
@ValidateNested({each: true})
@IsArray()
@IsNotEmpty()
public floors?: CreateFloorDTO[];
}
export class CreateFloorDTO {
@IsString()
@IsNotEmpty()
public name?: string;
@ValidateNested({each: true})
@IsNotEmpty()
@IsArray()
public rooms?: CreateRoomDTO[];
}
export class CreateRoomDTO {
@IsString()
@IsNotEmpty()
public name?: string;
}
//My Controller
@Controller("house")
export class HouseController {
@Post()
async create(
@Body()
body: CreateHouseDTO
) {
console.log(body); //output I mentioned
return body;
}
}