У меня есть список объектов со следующими обязательными ключами:
Дата, Время, Цена
Я хочу добавить необязательный ключ «порядок», и если один из этих объектов содержит этот необязательный ключ, они все должны. Как мне проверить это с Джои?
Вы можете создать схему динамически в зависимости от массива, который будет проверяться. Если в массиве есть несколько объектов, обладающих свойством order, то схема должна требовать это свойство от каждого объекта в массиве, в противном случае схема должна обрабатывать это свойство как необязательное:
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>