如何解决joi.label ,这个 joi 模式验证方法有什么作用
我刚遇到这行代码,我必须处理:
Joi.array().label('Emails').items(Joi.string()).required()
我特别不明白 .label('Emails')
在做什么,所以,我点击了文档:
覆盖错误消息中的键名。
name - the name of the key.
const 架构 = { first_name: Joi.string().label('First Name') };
这对我来说没有任何意义。因为,First Name
、Emails
是可以传递的特定参数吗?它压倒什么?我们还可以传递哪些其他参数等等。这个方法有什么特别的作用?
解决方法
如果你有这个架构:
const schema = Joi.object({
first_name: Joi.string().label('First Name')
});
并且你验证了一个无效的对象:
const { error,value } = schema.validate({ first_name: 123 })
error.details 对象如下所示:
[
{
message: 'first_name must be a string',path: [ 'first_name' ],type: 'string.base',context: {
label: 'First Name',valids: 123,key: 'first_name'
}
}
]
但是,如果您使用 .label('First Name') 这就是您从错误对象中得到的:
[
{
message: 'First Name must be a string',<< overrides
path: [ 'first_name' ],<< overrides
valids: 123,key: 'first_name'
}
}
]
因此,.label 将覆盖 message 和 context.label。
根据 documentation,您不能传递任何其他参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。