Nestjsにおいて、
user?user_id=1
のようなURLを受け取った際に
に
- user_ididが設定されていること
- user_ididが空文字でないこと
- user_ididが1以上の整数型であること
をチェックするため、以下のようにDTOを書きました。
import { IsInt, IsNotEmpty, Min } from "class-validator"; import { Type } from "class-transformer"; export class UserDto { @Type(() => Number) @Min(1) @IsInt() @IsNotEmpty() readonly user_id: number; }
そしてcontrollerに
@Get() getUserBaseInfo(@Query(ValidationPipe) queryParams: UserDto) { console.log(queryParams.user_id); return this.service.getUserBaseInfo(queryParams.user_id); }
と書きました。
user?user_id=1 → バリデーションを通過する user?user_id=a → バリデーションに引っかかる user → バリデーションに引っかかる
と、ここまでは想定通りなのですが、
user?user_id=
と何も値を設定しない場合、バリデーションを通過してしまいます。
user?user_id=
のようなケースもバリデーションに引っかかるようにするにはどうしたらよいでしょうか。
あなたの回答
tips
プレビュー