【NestJS】Pipe機能のメモ

Pipeの利用方法に関するメモ

f:id:keisuke8925gdk:20200115142828p:plain

Pipeは2つのユースケースがある

  1. transformation:インプットデータを望ましい形式に変更する
  2. validation:値が有効かどうか判定して、有効であれば変更しないまま通す、もし有効でなければエクセプションエラーを返す

Pipeを利用するところはController

  • Pipeはコントローラーレベルで利用する(Patch時、Post時など)

Pipeのtransformメソッドと気にする2つの値

  • transform()メソッドは2つの値をもつ

2つの値とは

  1. valuevalueは流れてくる値
  2. metadata: metadataはそのmetadata

元から利用できるPipeの機能

機能 説明
ValidationPipe
ParseIntPipe Stringの値を数値型に変換します
ParseUUIDPipe UUIDであるかどうかを確かめます

※注意
これらのbuilt-in Pipeを利用するには`class-validator’ と ‘class-transformer’がインストールされている必要があります

Pipeのスコープ4つ

  • method-scoped
  • controller-scoped,
  • global-scoped
  • param-scoped
param-scopeの例
  • Paramスコープのパイプは一つのパラメータのバリデーション時に有効
@Post()
async create(
@Body(new ValidationPipe()) createCatDto: CreateCatDto,
) {
this.catsService.create(createCatDto);
}
method-scopedの例
  • method-scopedの場合は@UsePipes()という記載を使います
@Post()
@UsePipes(new ValidationPipe())
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
global-scopedの例
  • もうここまできたら、main.tsに書いてしまいます
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です