Проверка Joi по нескольким запросам с помощью Nest. js - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь проверить запрос GET на Nest. js, который имеет несколько запросов с использованием Joi. Я понимаю, как использовать UsePipes и проверять один объект по одному параметру. Однако теперь у меня есть конечная точка с несколькими запросами, вот мой контроллер:

  @Get(':corporatePartnerId/search')
  @UsePipes(new JoiValidationPipe(queryEmployeeInformationDTOSchema))
  async getEmployeesByFilters(
  @Param('corporatePartnerId') corporatePartnerId: string,
  @Query('startDate') startDate?: number,
  @Query('endDate') endDate?: number,
  @Query('eligibility') eligibility?: string,
  @Query('fields') fields?: string,
  @Query('keyword') keyword?: string,
  @Query('page') page?: number,
  @Query('limit') limit?: number,
  )...

И UsePipes теперь проверяет одну и ту же схему для каждого из запросов, и я не понимаю, как проверять каждый запрос отдельно.

Есть ли способ проверить каждый запрос отдельно? Я не смог найти никаких ссылок, и единственное решение, которое я могу придумать, - это преобразовать все эти запросы в один объект, что в данном случае нежелательно .

1 Ответ

1 голос
/ 29 мая 2020

Вы можете передать канал в качестве второго аргумента декоратора запроса:

@Query('startDate', new JoiValidationPipe(joi.number())) startDate?: number

Но я лично предпочел бы проверку как один объект запроса, так как его легче читать и обрабатывать:

@Get(':corporatePartnerId/search')
async getEmployeesByFilters(
  @Param('corporatePartnerId', new JoiValidationPipe(joi.string())) corporatePartnerId: string,
  @Query(new JoiValidationPipe(QueryDtoSchema)) query: QueryDto,
)
...