当对象具有必填字段时,Joi - allow({})不起作用是因为Joi的allow方法用于指定允许的值,而{}表示一个空对象,不是一个有效的值。因此,Joi - allow({})不会起作用。
要解决这个问题,可以使用Joi的required方法来指定字段为必填字段。例如,假设我们有一个对象user,其中包含name和age字段,我们可以使用Joi来定义该对象的验证规则:
const Joi = require('joi');
const userSchema = Joi.object({
name: Joi.string().required(),
age: Joi.number().required()
});
const user = {
name: 'John',
age: 25
};
const { error, value } = userSchema.validate(user);
if (error) {
console.log(error.details);
} else {
console.log(value);
}
在上面的例子中,我们使用Joi.object方法定义了一个对象的验证规则,其中name和age字段都使用了Joi.string().required()和Joi.number().required()来指定为必填字段。然后,我们使用userSchema.validate方法对user对象进行验证,如果验证失败,会返回一个error对象,其中包含了详细的错误信息;如果验证成功,会返回一个value对象,其中包含了经过验证的对象。
这样,当对象具有必填字段时,Joi会正确地验证这些字段是否存在,如果不存在则会返回相应的错误信息。
领取专属 10元无门槛券
手把手带您无忧上云