Джой - нет. - PullRequest
       12

Джой - нет.

0 голосов
/ 13 ноября 2018

Я пытаюсь провести валидацию с Джои, но я пришел к сценарию, которого я не могу достичь. У меня есть объект. В некоторых случаях объект будет иметь идентификатор (редактировать), а в других - нет (создавать).

Я хочу проверить, что в случае отсутствия «id», должно быть несколько других полей.

Пока что мое единственное решение, которое работает, это когда id равен нулю и не пропущен вовсе. Есть ли способ сопоставить несуществующий ключ или я должен изменить его на ноль (немного странный).

joi.object().keys({
  id: joi
    .number()
    .min(0)
    .allow(null),
  someOtherField1: joi.when("id", { is: null, then: joi.required() })
});

Заранее спасибо!

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы готовы принять null в качестве id и хотите выполнить на нем условия, я бы предложил по умолчанию для поля id установить значение null.Таким образом, вы можете опустить его из полезной нагрузки и по-прежнему запрашивать его, используя Joi.when().

Например:

Joi.object().keys({
    id: Joi.number().min(0).allow(null).default(null),
    someOtherField1: Joi.string().when('id', { is: null, then: Joi.required() })
});

Передача как пустого объекта, {}, так и объекта сnull id, { "id": null }, приведет к:

ValidationError: дочерний процесс "someOtherField1" завершается ошибкой, поскольку ["someOtherField1" требуется]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...