Подтверждение Joi в случае альтернатив - PullRequest
0 голосов
/ 20 сентября 2018

Существует объект, имеющий три ключа

const abc = {
  customerId: '777',
  firstName: 'pqr'',
  lastName: 'xyz',
};

Условие состоит в том, что если присутствует идентификатор клиента, то имя и фамилия могут быть проигнорированы.В противном случае это должны быть строки максимальной длины 20.

const schema = Joi.object({
  customerId: Joi.string(),
  firstName: Joi.alternatives().when('customerId', {
    is: null,
    then: Joi.string(),
  }),
  lastName: Joi.alternatives().when('customerId', {
    is: null,
    then: Joi.string(),
  })
})
Joi.validate(abc, schema);

Здесь я получаю эту ошибку

error: {ValidationError: "firstName" не разрешено в Object.exports.процесс (/home/runner/node_modules/joi/lib/errors.js:

Итак, как это можно реализовать?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вы должны использовать .or вместо when.

Вот пример: https://repl.it/@amasad/joi

Схема:

const schema = Joi.object({
  customerId: Joi.string(),
  firstName: Joi.string().max(20),
  lastName: Joi.string().max(20),
}).or('customerId', 'lastName')
  .or('customerId', 'firstName');
0 голосов
/ 20 сентября 2018

Это потому, что ваша схема ищет firstname, в то время как ваш объект имеет firstName.Попробуй без прописной N.

const abc = {
   customerId: '777',
   firstname: 'pqr',
   lastname: 'xyz'
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...