Применить трубу ко всем вхождениям переменных в контроллере - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть контроллер, который имеет несколько запросов (POST, GET и т. Д.). Для всех них в пути у меня есть параметр id. Я хочу проверить, что параметр является числовой строкой, но я хочу сделать это один раз и применить его ко всем.

В настоящее время у меня есть такой код:

  @Get(':account_id')
  @ApiOperation({
    description: 'Get account information',
    operationId: 'getAccount',
    title: 'Get account information',
  })
  @ApiOkResponse({ type: AccountDto })
  @ApiUnauthorizedResponse({ type: ApiErrorDto })
  @ApiForbiddenResponse({ type: ApiErrorDto })
  @ApiNotFoundResponse({ type: ApiErrorDto })
  @ApiBadRequestResponse({ type: ApiErrorDto })
  @ApiImplicitParam({ name: 'account_id', description: 'The account Id' })
  async findOne(@Param('account_id', new ParseIntPipe()) accountId: string): Promise<AccountDto> {
    return await this.accountService.findOne(accountId);
  }

Everyкогда мне нужно вызвать канал проверки.

Есть ли способ применить проверку ко всем переменным account_id в моем контроллере?

1 Ответ

1 голос
/ 07 ноября 2019

Вы можете получить класс в качестве параметра и проверить его свойства.

Контроллер -

@Get(':id')
findOne(@Param() params: FindOneParams) {
  return params.id;
}

Класс -

import { IsNumberString } from 'class-validator';

export class FindOneParams {
  @IsNumberString()
  id: number;
}
...