node.js - 如何在 Joi.errors() 中获取模式中其他 ref 的值?
问题描述
在 Joi 模式中,我想访问该模式中另一个引用的值以在Joi.errors()
函数中打印?
我试图登录.error(() => Joi.ref('name'))
,但它给了我'ref:name'
在下面的示例中,如果数量验证失败,则输出将是“'ref:name' 的文章数量是必需的”。我想要的是输出的实际值article.name
。
const article = Joi.object({
name: Joi.string()
.max(128)
.required(),
quantity: Joi.number()
.integer()
.positive()
.required()
.error(() => `Article quantity for '${Joi.ref('name')}' is required.`),
});
解决方案
我认为这Joi
不支持这一点,您可以自己提取价值。
function validateInput(input) {
const article = Joi.object({
name: Joi.string()
.max(128)
.required(),
quantity: Joi.number()
.integer()
.positive()
.required()
.error(() => `Article quantity for '${input.name}' is required.`),
});
return article.validate(input);
}
但请记住,如果abortEarly选项设置为但未设置false
,input.name
错误消息会变得有点难看:
validateInput({}); // "quantity" fails because [Article quantity for 'undefined' is required.]
推荐阅读
- react-native - 如何找到可能的未处理承诺拒绝的来源
- angular - 如何扩展现有的角度示意图
- java - 使用 Mockito 对 InputStreamReader 进行 Junit 测试
- c# - 为什么不推荐使用这种“goto”语句?
- kubernetes - 安装 metric-server 时无法完全收集指标
- django - 内联实例的多个查询 Django admin
- javascript - h:inputText 只允许十进制数字
- spring-boot - Spring Boot Websocket 聊天和 RabbitMQ
- operating-system - 使用原始文件名将文件保存为不同的格式
- wpf - 几何绘图图像的VisualBrush模糊并被切断