Joi - allow ({}) не работает, когда у объекта есть обязательные поля - PullRequest
1 голос
/ 28 апреля 2020

С Джоем я хочу сделать пустой объект (объект без собственных свойств) допустимым или объект с определенной структурой допустимым. Но я не уверен, как это сделать. Следующее было моей попыткой, и оно не работало. Может кто-нибудь дать мне альтернативные предложения?

joi.validate({}, joi.object({ 
    a: joi.string().required(),
    b: joi.string().required(),
}).optional().allow({}));

Приведенный выше код не работает, если я отправляю пустой объект. Но, видите, я четко упомянул об этом в .allow()

Так что я хочу написать схему joi, чтобы принять следующие структуры данных как действительные,

{}

 Or

{ a: 'some-string', b: 'some-string' }

1 Ответ

0 голосов
/ 04 мая 2020

Я думаю, что это может решить вашу проблему.

const obj = {};
const length = Object.keys(obj).length;

const { error: joiError, value: joiValue } = length > 0 ? joiSchema.validate(obj) : true;

joiSchema = Joi.object().keys({
    a: joi.string().required(),
    b: joi.string().required(),
});

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