URL 输入验证 NestJs

URL input validation NestJs

我正在尝试在网站 URL 上进行输入验证。我使用了 URL 装饰器,但是当我没有输入任何 URL 时,它会给我错误消息。我应该怎么做才能让它也接受空字符串?

  @ApiProperty()
  @IsString()
  @IsUrl(undefined, { message: 'Company URL is not valid.' })
  companyURL: string;

您可以使用 @IsOptional() class-验证器或 @IsDefined(value: any).

@IsOptional()

Checks if given value is empty (=== null, === undefined) and if so, ignores all the validators on the property.

@IsDefined(value: any)

Checks if value is defined (!== undefined, !== null). This is the only decorator that ignores skipMissingProperties option.

如果您需要更多信息,请查看 documentation about class-validators

您可以使用@IsOptional() class-validator 来检查给定值是否为空。

@ApiProperty()
@IsOptional()
  @IsString({ message: 'Must be a string!' })
  @IsUrl(undefined, { message: 'Company URL is not valid.' })
  companyURL: string;

您还可以从“https://github.com/typestack/class-validator#usage”或“https://github.com/typestack/class-validator#validation- 查看更多信息装饰器”。

我必须添加 @Validateif() 来检查它是否有值。

@ApiProperty()
  @ValidateIf(o => o.  companyUrl
    === 'value')
  @IsString()
  @IsUrl(undefined, { message: 'Company Url is not valid.' })
  companyUrl: string;