Сделайте параметры обязательными в NestJS - PullRequest
0 голосов
/ 23 октября 2018

Я инициирую NestJS (Powerfull Framework!)

Я бы сделал свой параметр запроса маршрута необходимым, в противном случае выдается ошибка 400.

@Controller('')
export class AppController {
  constructor() {}
  @Get('/businessdata/messages')
  public async getAllMessages(
    @Query('startDate', ValidateDate) startDate: string,
    @Query('endDate', ValidateDate) endDate: string,
  ): Promise<string> {
   ...
  }
}

I 'используя pipe , чтобы определить, является ли параметр действительным, но нет, если он существует, и я не уверен, что для этого созданы Pipes.

Так как я могу проверить в NestJS, если мойпараметр существует, если не выдает ошибку?

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Используйте class-validator.Для этого определенно созданы трубы!

Пример: create-user.dto.ts

import { IsNotEmpty } from 'class-validator';

export class CreateUserDto {
   @IsNotEmpty()
   password: string;
}

Для получения дополнительной информации см. Документацию class-validator: https://github.com/typestack/class-validator

и документация NestJS Pipes & Validation: https://docs.nestjs.com/pipes https://docs.nestjs.com/techniques/validation

0 голосов
/ 09 июля 2019

В дополнение к ответу Фи вы можете комбинировать использование class-validator со следующим глобальным каналом проверки:

app.useGlobalPipes(
    new ValidationPipe({
      /*
            If set to true, instead of stripping non-whitelisted 
            properties validator will throw an exception.
      */
      forbidNonWhitelisted: true,
      /*
            If set to true, validator will strip validated (returned) 
            object of any properties that do not use any validation decorators.
      */
      whitelist: true,
    }),
  );

Я использую это для того, чтобы разрешить только параметры, определенные в классе DTO, чтобыон выдаст ошибку, когда неизвестные параметры будут отправлены с запросом!

В примере с Phie запрос на публикацию с телом, подобным {password: 'mypassword'}, пройдет проверку, когда {password: 'mypassword', other: 'reject me!'} не пройдёт.

0 голосов
/ 24 октября 2018

Есть простой способ проверить ваш параметр, https://docs.nestjs.com/techniques/validation

...