Разрешить только определенные значения для ключа в схеме Joi

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

Моя примерная схема:

const schema = joi.object().keys({
    query: joi.object().keys({
        // allow only apple and banana
        id: joi.string().regex(/^(apple|banana)$/).required(),
    }).required(),
})

person mardok    schedule 27.02.2018    source источник


Ответы (2)


Вы также можете использовать valid как

const schema = joi.object().keys({
  query: joi.object().keys({
    // allow only apple and banana
    id: joi.string().valid('apple','banana').required(),
  }).required(),
})

Ссылка: https://github.com/hapijs/joi/blob/v13.1.2/API.md#anyvalidvalue---aliases-only-equal

person Jiby Jose    schedule 27.02.2018
comment
это позволяет только одно из двух, Как мы можем сделать это для обоих. - person Vinod Kumar Marupu; 06.09.2018
comment
как я могу предотвратить указание цены в цене полезной нагрузки: Joi.when ('pricing', {is: 'FIXED', then: // запретить добавление цены здесь, в противном случае: Joi.number () .min (1) .max (1000 ) .требуется() }) - person tarek noaman; 03.04.2020
comment
@tareknoaman Во-первых, это звучит совершенно не связанно с этим вопросом. Но вы могли бы опустить «тогда». Если это не сработает, задайте новый вопрос. - person Andy; 30.04.2020
comment
@VinodKumarMarupu Ваш комментарий не имеет смысла. Строка может иметь только одно значение за раз. Вы, вероятно, использовали бы массив или дополнительный ключ, чтобы разрешить больше значений. - person Andreas Bergström; 18.01.2021

Если вы хотите принять одно или несколько значений (яблоко, банан или оба), вы можете использовать allow: https://joi.dev/api/?v=17.3.0#anyallowvalues

person anli    schedule 30.03.2020