Javascript 当对象具有必需字段时,Joi-allow({})不起作用

Javascript 当对象具有必需字段时,Joi-allow({})不起作用,javascript,node.js,joi,Javascript,Node.js,Joi,对于Joi,我希望使一个空对象(没有自己属性的对象)有效,或者使一个具有特定结构的对象有效。但我不知道怎么做。以下是我的尝试,但它不起作用。有人能给我其他建议吗 joi.validate({}, joi.object({ a: joi.string().required(), b: joi.string().required(), }).optional().allow({})); 如果我发送一个空对象,上述代码将失败。但是请看,我在.allow() 所以我想写一个joi模式

对于Joi,我希望使一个空对象(没有自己属性的对象)有效,或者使一个具有特定结构的对象有效。但我不知道怎么做。以下是我的尝试,但它不起作用。有人能给我其他建议吗

joi.validate({}, joi.object({ 
    a: joi.string().required(),
    b: joi.string().required(),
}).optional().allow({}));
如果我发送一个空对象,上述代码将失败。但是请看,我在
.allow()

所以我想写一个joi模式来接受以下有效的数据结构

{}

 Or

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

我想这可能会解决你的问题

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(),
});


我想这可能会解决你的问题

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(),
});