NestJSにおけるカスタムルートデコレータに関するお勉強記録です。主に以下のページを見て学んだ内容になります。
Custom decorators | NestJS - A progressive Node.js framework
上記解説ページにあるコードを実行しようとするとあれこれ下準備が必要で大変なのでコードを見るだけで終わりました。
カスタムルートデコレータ
それでは読むだけですが書いていきます。
カスタムルートデコレータの作成
NestJSでは以下のコマンドでデコレータを作成できます。
nest g decorator common/decorator/user
common/decoratorフォルダの下にuser.decorator.tsという名前でファイルが作成されます。作られた直後の中身はこんな感じです。
1 2 3 |
import { SetMetadata } from '@nestjs/common'; export const User = (...args: string[]) => SetMetadata('user', args); |
これはカスタムルートデコレータ用のコードとは違うのでまるっと書き換えます。
1 2 3 4 5 6 7 8 |
import { createParamDecorator, ExecutionContext } from '@nestjs/common'; export const User = createParamDecorator( (data: unknown, ctx: ExecutionContext) => { const request = ctx.switchToHttp().getRequest(); return request.user; }, ); |
これをコントローラで次の様に宣言することでuserにrequest.userの値が入ってくる形になります。
1 2 3 4 |
@Get() async findOne(@User() user: UserEntity) { console.log(user); } |
overviewの最後の節だからか元のドキュメントだけだと試せないような説明になっており読むだけで終わってしまいました。