joi - 在外部属性上使用 when() 进行 Joi 验证
问题描述
我有这样的事情:
let someCoolString = 'mememe';
const schema = Joi.object({
someFieldName: Joi.string()
.when(someCoolString, {
is: "mememe",
then: Joi.required(),
otherwise: Joi.forbidden(),
})
});
但这显然不起作用,因为someCoolString
不是Joi.object
' 属性。知道如何检查吗?
解决方案
您可以使用上下文:
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)}});
推荐阅读
- reactjs - 如何在反应上创建抽象状态值
- android - 如何在 Nox 应用播放器中更改默认地理位置
- flutter - 当类用作值而不是字符串时,颤动下拉失败
- php - url中没有index.php,codeigniter无法工作
- python - 用 base 解码字符串
- javascript - 异步函数的未处理承诺拒绝
- php - Wordpress 从查询参数中获取用户 ID 并使用用户名重定向
- asp.net-core - 如何从存储在我本地机器上的 .db 文件中读取数据,使用 asp .net core web api?
- python - 如何解决““RuntimeError: CUDA out of memory.”?有没有办法释放更多的内存?
- python - 如何解决 Pandas 在数值列中的自动计数问题?