Как разрешить ноль, но запретить неопределенное? - PullRequest
0 голосов
/ 14 апреля 2020

Например, для строк базы данных нам могут понадобиться обнуляемые свойства, которые не должны быть неопределенными:

class DbRow {
  @IsNumber()
  id!: number;

  @IsNumber()
  numNullable!: number | null;
}

Так что numNullable может быть числом или null - но оно никогда не должно быть undefined.

Как мы можем express это в классе-валидаторе?

  • добавление @Optional() не работает, потому что это также позволило бы undefined
  • I также не повезло с пользовательским валидатором

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Оказывается, что это возможно при использовании условной проверки ValidateIf:

class DbRow {
  @IsNumber()
  id!: number;

  @IsNumber()
  @ValidateIf((object, value) => value !== null)
  numNullable!: number | null;
}

Вот пример stackblitz

0 голосов
/ 14 апреля 2020

Это ограничение библиотеки, оно не допускает ветвления условий. Лучший способ - написать свой собственный валидатор, который допускает только нули.

...