我是 NestJS 的初学者,我想为以下结构编写一个 DTO -
{
something: {
info: {
title: string,
score: number,
description: string,
time: string,
DateOfCreation: string
},
Store: {
item: {
question: string,
options: {
item: {
answer: string,
description: string,
id: string,
key: string,
option: string
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想为该嵌套数据对象编写一个 DTO。我找不到在 NestJS 中编写嵌套 DTO 的可靠示例。我是 NestJS 的初学者,之前从未使用过 DTO。所以请不要假设我知道一些事情。我将它与 Mongoose 一起使用。
我想在nest.js控制器中使用class-validator验证身体有效载荷。我的currency.dto.ts文件是这样的:
import {
IsNotEmpty,
IsString,
ValidateNested,
IsNumber,
IsDefined,
} from 'class-validator';
class Data {
@IsNotEmpty()
@IsString()
type: string;
@IsNotEmpty()
@IsNumber()
id: number;
}
export class CurrencyDTO {
@ValidateNested({ each: true })
@IsDefined()
data: Data[];
}Run Code Online (Sandbox Code Playgroud)
在我的nest.js控制器中,我像这样使用它。
@Post()
@UseGuards(new AuthTokenGuard())
@UsePipes(new ValidationPipe())
addNewCurrency(@Req() req, @Body() data: CurrencyDTO) {
console.log('data', data);
}Run Code Online (Sandbox Code Playgroud)
我的验证管道类是这样的:
import {
PipeTransform,
Injectable,
ArgumentMetadata,
BadRequestException,
HttpException,
HttpStatus,
} from '@nestjs/common';
import { validate, IsInstance } from 'class-validator';
import { plainToClass, Exclude } from 'class-transformer';
@Injectable()
export …Run Code Online (Sandbox Code Playgroud)我需要通过类验证器使用接口来验证传入请求正文中特定字段的传入表单。
界面:
export enum Fields {
Full_Stack_Dev = 'full stack dev',
Frontend_Dev = 'frontend dev',
Backend_Dev = 'backend dev',
}
export interface Experience {
field: Fields;
years: number;
}
Run Code Online (Sandbox Code Playgroud)
这是DTO课程:
@IsEnum(Languages)
languages: Languages[];
experience: Experience[]; // Not sure which decorator to use for interfaces
Run Code Online (Sandbox Code Playgroud)