Как в Joi написать условия проверки вхождения хотябы одного конкретного значения в массиве?

Требуется проверить: если указан объект BU, то должен быть хотябы один объект PN со status == 1

Пример json

{
   "BU":[
      {
         "businessName":"OOO Александров",
         "businessStatus":"0"
      }
   ],
   "PN":[
      {
         "number":"7777777",
         "status":1
      },
      {
         "number":"7777777",
         "status":2
      }
   ]
}

Ответы (1 шт):

Автор решения: Динис Коновалов

Удалось решить проблему. Приведу ниже решение

Joi.object({
  BU: Joi.array()
    .items(require("./BU"))
    .max(1),
  PN: Joi.array()
    .items(require("./PN"))
    .max(5)
}).when(
  Joi.object({
    BU: Joi.exist()
  }).unknown(),
  {
    then: Joi.object({
      PN: Joi.array()
        .required()
        .has(
          Joi.object({
            status: Joi.valid("1")
          })
        )
    })
  }
);
→ Ссылка