Создайте схему, которая допускает любой ключ, но с определенным значением объекта

Если у меня есть такие данные:

params: {
  fieldOne: {
    a: 'a1',
    b: 'b1'
  },
  fieldTwo: {
    a: 'a2',
    b: 'b2'
  }
}

Я пытаюсь написать схему joi, которая будет проверять, что params является объектом с любыми ключами, которые имеют значения как объекты с a и b.

Я изо всех сил пытаюсь понять, как разрешить любой ключ в значении params, но все же проверить значение.

const schema = joi.object().keys({
  params: joi.object().required().keys({
    // How to allow any keys here, but require that the value is an object with keys a and b?
  })
});

person Catfish    schedule 20.08.2020    source источник


Ответы (1)


Вы можете использовать object.pattern(pattern, schema, [options]).

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

const schema = joi.object().keys({
    params: joi.object().pattern(
        // this is the 'pattern' of the key name
        // you can also use a regular expression for further refinement
        joi.string(),
        // this is the schema for the key's value
        joi.object().keys({
            a: joi.string().required(),
            b: joi.string().required()
        })
    ).required()
});
person Ankh    schedule 20.08.2020