Альтернативы Joi не работают в соответствии с требованиями для проверки запроса - PullRequest
0 голосов
/ 25 сентября 2018

Я использую модуль npm Joi для проверки запроса.Здесь мой код, для которого я ожидаю ошибку из запроса, поскольку fooReq требуется, если invoice_number, но Джой не возвращает ошибку.

let fooReq = Joi.object({
    city: Joi.string().required(),
    zip: Joi.string().required(),
}).required();

let fooOpt = Joi.object({
    city: Joi.string(),
    state: Joi.string(),
}).optional();


let barSch = {
    invoice_number: Joi.string(),
    shipping: Joi.alternatives()
        .when('invoice_number',
            {
                is: Joi.string(),
                then: fooReq,
                otherwise: fooOpt
            }
        )
};

let request = {
    invoice_number: "123"
};

console.log(Joi.validate(request, barSch));

1 Ответ

0 голосов
/ 25 сентября 2018

Простое решение с использованием when, получено от github .

const Joi = require('joi');

const foo = Joi.object({
    city: Joi.string().required(),
    zip: Joi.string().required(),
});

const deliverySchema = Joi.object({
    invoice_number: Joi.string(),
    shipping: foo
        .when('invoice_number', {
            is: Joi.string().required(),
            then: Joi.required()
        })
});

console.log(deliverySchema.validate({ invoice_number: "123346575867879878" }).error)
console.log(deliverySchema.validate({}).error)
console.log(deliverySchema.validate({ shipping: 'foo' }).error)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...