たかぎとねこの忘備録

プログラミングに関する忘備録を自分用に残しときます。マサカリ怖い。

NestJSでパラメーターを含むパスをネストしたい場合の簡単な方法

UsersControllerActivitiesControllerの二つがある場合、activitiesルートをusersルートの子ルートとして実装したい場合がある。

例えば/users/:uidの後に/activities/:idのパスを繋いで/users/:uid/activities/:idというパスでアクセスしたいみたいな感じ。

その場合は単純に@Controllerデコレーターにusers/:uid/activitiesを渡せば良い。

...
@Controller('users/:uid/activities')
export class ActivitiesController {
...

そして、:uidパラメーターを受け取る場合は@Param('uid')をメソッドの引数で利用する。

...
@Get(':id')
  async findOne(@Param('id') id: string, @Param('uid') uid: string) {
    const activity = await this.activitiesService.findOne({
      id,
      userId: uid,
    });
    return activity;
  }
...