Joi - как проверить, когда значение другого ключа равно null/пусто

avatar
Juan enriquez
9 августа 2021 в 00:28
1263
1
0

У меня возникли проблемы с проверкой файла JSON, точнее, у меня возникли проблемы с когда.

У меня есть a ключ, который должен иметь прошлую дату и не требуется. Then I have a b key that should be an url and if a is null/empty, b может быть пустым, в противном случае необходимо указать .

Я оставлю свой код ниже, чтобы было понятно, но прямо сейчас я не получаю никаких ошибок, если b равно null, а a нет.

a: Joi.date().less("now").raw().optional().allow(null, ""),
b: Joi.string()
  .uri({ scheme: [/https?/] })
  .when("a", {
    is: Joi.any().empty(),
    then: Joi.optional().allow(null, ""),
    otherwise: Joi.required(),
  }),
Источник

Ответы (1)

avatar
Juan enriquez
9 августа 2021 в 13:13
1

Решение найдено, мое условие is было неправильным.

Вместо использования is: Joi.any().empty() я вставил is: Joi.any().valid(null, ""), и это сработало.

Итак, решение таково:

a: Joi.date().less("now").raw().optional().allow(null, ""),
b: Joi.string()
  .uri({ scheme: [/https?/] })
  .when("a", {
    is: Joi.any().valid(null, ""),
    then: Joi.optional().allow(null, ""),
    otherwise: Joi.required(),
  }),