app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
}),
);
import { IsNotEmpty, IsString } from 'class-validator';
export class SignupUserDto {
@IsString()
@IsNotEmpty()
username: string;
password?: string;
}
上面的password是非必填,按照上面的写法,如果填了password,controller中拿不到password的值。
只有加上一个注解才可以。加上注解如果不传,又会提示password必须是字符串,怎么搞?
没太理解你的需求,你开启了
whitelist
不就是主动丢弃了没加装饰器的字段了?但是你还不想丢弃?那你干嘛要开启它呢?非要这么拧巴的话那你就也加个装饰器,同时指定仅当字段不为空时才验证吧:
也可以写成:
两者是等效的。