2021. 8. 17. 23:11ใ๐ TIL
๐ whitelist:true ์ผ ๋ DTO์ ์ด๋ ธํ ์ด์ ์ด ๋ฏธ์น๋ ์ํฅ
์ด๋ฐ DTO์ ๋ง๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋์ง ํ ์คํธ๋ฅผ ํด๋ดค๋๋ฐ, ๊ฐ์ด ์ ๋๋ก ๋ค์ด์ค์ง ์์๋ค.
export class CreateStudyDto{
title: string;
subtitle: string;
purpose: string;
dateTime: string;
curriculum: string;
noti: string;
apply: string;
}
์ด์ ๋ @IsString() ์ด๋
ธํ
์ด์
์ ๋ถ์ฌ์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด์ ๋ main.ts ์์ validator, ๊ทธ์ค์์๋ whitelist : true ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
app.useGlobalPipes(new ValidationPipe({
whitelist: true,
transform: true
}))
whitelist ๋ entity ์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ ๊ฐ์ ์ ์ธํ๊ณ ,
transform ์ controller ์์ ์ ์ํ ํ์ ์ผ๋ก ํ๋ณํ ์ํจ๋ค.
๊ณต์ ๋ฌธ์์ ์ํ๋ฉด, whitelist ๋ฅผ true ๋ก ์ค์ ํ๋ฉด, validation class ์์ decorator ๊ฐ ์๋ ํ๋กํผํฐ๋ฅผ non-whitelisted ๋ก ๊ฐ์ฃผํ์ฌ ์๋ ์ญ์ ์ํจ๋ค. ์ด ๋๋ฌธ์ @IsString() ์ด๋ ธํ ์ด์ ์ ๋ถ์ฌ์ฃผ์ง ์์ ์์ DTO ๋ ์ ๋๋ก ๊ธฐ๋ฅ์ ๋ฐํํ์ง ๋ชปํ๋ค.
When set to true, this will automatically remove non-whitelisted properties (those without any decorator in the validation class). - docs.nestjs.com
์๋์ฒ๋ผ ์ ์ ํ ์ด๋ ธํ ์ด์ ์ ๋ถ์ฌ์ฃผ๋ฉด, whitelist ์ ํฌํจ๋ ํ๋กํผํฐ๋ก ๊ฐ์ฃผ๋์ด ์ ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
export class CreateStudyDto{
@IsString()
title: string;
@IsOptional()
@IsString()
subtitle: string;
@IsOptional()
@IsString()
purpose: string;
@IsOptional()
@IsString()
dateTime: string;
@IsOptional()
@IsString()
curriculum: string;
@IsOptional()
@IsString()
noti: string;
@IsOptional()
@IsString()
apply: string;
}