Joi проверяет список объектов, где все должны содержать необязательный ключ, если он находится в одном объекте - PullRequest
0 голосов
/ 11 июля 2019

У меня есть список объектов со следующими обязательными ключами:

Дата, Время, Цена

Я хочу добавить необязательный ключ «порядок», и если один из этих объектов содержит этот необязательный ключ, они все должны. Как мне проверить это с Джои?

1 Ответ

0 голосов
/ 12 июля 2019

Вы можете создать схему динамически в зависимости от массива, который будет проверяться. Если в массиве есть несколько объектов, обладающих свойством order, то схема должна требовать это свойство от каждого объекта в массиве, в противном случае схема должна обрабатывать это свойство как необязательное:

const schemaFactory = input =>
  Joi.array().items(
    Joi.object().keys({
      Date: Joi.required(),
      Time: Joi.required(),
      Price: Joi.required(),
      order: input.some(item => item.hasOwnProperty('order'))
        ? Joi.required()
        : Joi.optional()
    })
  )

const input = [
  { Date: 1, Time: 2, Price: 3 },
  { Date: 1, Time: 2, Price: 3, order: true },
]

const schema = schemaFactory(input)
const result = schema.validate(input)

if (result.error) {
  console.log(result.error)
}
<script src="https://cdn.jsdelivr.net/npm/joi-browser@13.4.0/dist/joi-browser.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...