Джой, проверить различные схемы массива на основе длины массива - PullRequest
0 голосов
/ 16 марта 2019

У меня возникла проблема с Джои, которую я изо всех сил пытался решить, и я использовал множество различных синтаксисов, чтобы попытаться ее решить.

По сути, у нас есть две схемы ниже.Скажем, есть 5 вариантов в раскрывающемся списке.Если в массиве есть только один элемент, требуется только arraySchemaOne, а если в нем несколько элементов, то требуются как схема 1, так и два.

const arraySchemaOne = Joi.object({
    dropdown: Joi.string().valid('Option 1')
}).required();

const arraySchemaTwo = Joi.object({
    dropdown: Joi.string().valid('Option 2')
}).required();

this.validationPattern = Joi.object().pattern(/\w/, Joi.object(
    {
          rows: Joi.ref('rows.length >= 2')
          ?
          Joi.array().items([arraySchemaOne, arraySchemaTwo])
          :
          Joi.array().items([arraySchemaOne])
    }
));

Если у кого-либо есть синтаксис, который может помочь в решении этой проблемы, онбыло бы замечательно.За последние несколько дней я много чего перепробовал и не смог решить эту проблему.

1 Ответ

0 голосов
/ 19 марта 2019

@ katherineGG28, возможно, вы захотите взглянуть на следующую документацию. API joi предоставляет метод when, в котором вы можете передать уже имеющуюся ссылку в качестве первого параметра, а затем заполнить параметры альтернативными схемами.Кстати, если другой инженер представил библиотеку, вы должны хотя бы проверить файл README в репозитории, в котором четко указано, что эта библиотека не была разработана с учетом браузеров.

https://github.com/hapijs/joi/blob/v14.3.1/API.md#anywhencondition-options

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