Как использовать Joi для проверки объекта карты (ключи карты и значения карты)

Например, есть такая карта:

keys = type string, 5 characters long
values = type number

Пример:

test = {
   "abcde": 1
   "12345": 2
   "ddddd": 3
}

Как написать схему Joi, которая проверяет, что ключ имеет тип строки с 5 символами, а значения имеют номер типа


person alexpov    schedule 01.02.2019    source источник
comment
Что вы пробовали до сих пор в Joi?   -  person AndrewL64    schedule 01.02.2019
comment
@ AndrewL64 Я не нашел способа добиться этого, закрывается использование Joi.object (). Keys ({}), но ключи в моем примере не предопределены, и они сами должны быть проверены   -  person alexpov    schedule 02.02.2019


Ответы (1)


Похоже, вы пытаетесь проверить объект с неизвестными ключами, но знаете, какому общему шаблону должен соответствовать объект. Вы можете добиться этого, используя .pattern() Джои. метод:

object.pattern(pattern, schema)

Задайте правила проверки для неизвестных ключей, соответствующих шаблону, где:

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

schema - ключи соответствия объекта схемы должны проверяться.

Итак, для вашего экземпляра:

Joi.object().pattern(Joi.string().length(5), Joi.number());
person Ankh    schedule 03.02.2019