如何在NestJS的DTO中设置默认值?
给DTO字段设置默认值的实现方案
在你的QueryCollateralTypeDto中,可以通过直接为类属性赋值默认值,配合@Transform处理参数未传递时的情况,来实现page、limit和select的默认值设置,修改后的代码如下:
import { IsString, IsNumber, IsOptional, Min, Max } from 'class-validator'; import { Transform } from 'class-transformer'; export class QueryCollateralTypeDto { @Transform(({ value }) => value ? parseInt(value) : 1) @IsNumber() @IsOptional() page: number = 1; @Transform(({ value }) => value ? parseInt(value) : 10) @IsNumber() @IsOptional() limit: number = 10; @IsString() @IsOptional() select: string = "field1,field2,..."; }
关键说明:
- page/limit字段:
- 直接在属性后赋值
= 1和= 10作为默认值; @Transform中增加判断:如果请求未传递该参数(value为undefined),直接返回默认值,避免parseInt(undefined)得到NaN导致验证失败。
- 直接在属性后赋值
- select字段:
直接为属性赋值默认字符串即可,当请求未传递该参数时,class-transformer会自动使用这个默认值,同时@IsOptional标记允许参数缺失。
内容的提问来源于stack exchange,提问作者ermir
相关产品推荐
相关产品推荐

