外部属性上with when()的Joi验证
我有这样的想法:外部属性上with when()的Joi验证,joi,Joi,我有这样的想法: let someCoolString = 'mememe'; const schema = Joi.object({ someFieldName: Joi.string() .when(someCoolString, { is: "mememe", then: Joi.required(), otherwise: Joi.forbidden(), }) }); 但是这显然不起作用,因为someCool
let someCoolString = 'mememe';
const schema = Joi.object({
someFieldName: Joi.string()
.when(someCoolString, {
is: "mememe",
then: Joi.required(),
otherwise: Joi.forbidden(),
})
});
但是这显然不起作用,因为someCoolString
不是Joi.object
的属性。您知道如何检查它吗?您可以使用:
宾果,OP不仅可以使用上下文,而且OPs的问题100%完全是上下文的用途。
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)}});