问题描述
我有这样的事情:
let someCoolString = 'mememe';
const schema = Joi.object({
someFieldName: Joi.string()
.when(someCoolString,{
is: "mememe",then: Joi.required(),otherwise: Joi.forbidden(),})
});
但这显然不起作用,因为 someCoolString
不是 Joi.object
的属性。知道如何检查吗?
解决方法
您可以使用context:
const schema = Joi.object().keys({
someFieldName: Joi.number().when('$condition',{
is: Joi.boolean().valid(true).required(),then: Joi.required(),otherwise: Joi.forbidden()
})
});
let someCoolString = 'mememe';
let someCoolString2 = 'not_meme';
function isMeme(str) {
return str == 'mememe'
};
// error: null
schema.validate({});
// someFieldName required
schema.validate({},{context: {condition: isMeme(someCoolString)}});
// someFieldName forbidden
schema.validate({ someField: 10 },{context: {condition: isMeme(someCoolString2)}});