问题描述
我只是想处理 Joi 验证架构上的自定义消息错误。我有类似的东西:
Joi.object().keys(
analysisOptions: Joi.object()
.required()
.keys({
title: Joi.string()
.max(200)
.error(
new InvalidRequestError(
'A valid string with 200 characters or less needs to be passed as a title parameter'
)
),analysisId: Joi.string()
.required()
.regex(/^[\w&.-]+$/)
.max(200)
.error(
new InvalidRequestError(
'A valid Id [a-zA-Z0-9_-]+ with 200 characters or less needs to be passed as an analysisId parameter'
)
),threshold: Joi.number()
.error(new InvalidRequestError('A valid number needs to be passed as a threshold parameter'))
.default(DEFAULT_THRESHOLD)
})
)
问题是,在测试时,如果我在模式中接收到 analysisId,每个其他键(标题和阈值)的特定问题都带有正确的错误消息。我的意思是,如果架构带有 analysisId 和超过 200 个字符的标题,我会收到附加到标题的错误。
但是,如果我不传递 analysisId 属性,我会收到来自父级的错误(我的意思是 analysisOptions 属性本身),告诉我:
"child \"analysisOptions\" fails because [\"analysisOptions\" is required]"
如果我将错误方法链接到 analysisOptions 键,我可以处理此错误,但在这种情况下,对象内部的所有错误都将被忽略,并且我无法为对象内部的每个不同的键抛出错误。
如果我把这个:
analysisOptions: Joi.object()
.required()
.keys({...})
.error(...)
然后将忽略架构中的所有自定义消息错误,对于超过 200 个字符的标题,我无法抛出特定错误。
有人可以帮我吗?提前致谢:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)