如何解决joi v17.4.1,仅验证提及或必填字段,所有其他参数应为选项
我正在使用 joi v17.4.1 来验证 post 输入正文参数,但我只想将所需的参数放入 JOi Schema 中 例如,对于注册,我只需要用户名、电子邮件和密码是强制性的,所有其他参数都是选项。 所以我正在创建 joi 架构,如:
const registerUserValidator = async (body) => {
const schema = Joi.object().keys({
username: Joi.string()
.alphanum()
.min(3)
.max(30)
.required(),password: Joi.string()
.pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),repeat_password: Joi.ref('password'),email: Joi.string()
.email({ minDomainSegments: 2,tlds: { allow: ['com','net'] } })
})
用户可以发帖:
{
"username":"myuserName","name":"Test Name","email":"test@email.com","phone":"00000000","password":"12345","repeat_password":"12345",}
我收到错误:
{
"messeage": "\"name\" is not allowed"
}
>请帮忙
解决方法
只需使用 Joi.allow() 添加其他字段,如下所示:
const registerUserValidator = async (body) => {
const schema = Joi.object().keys({
username: Joi.string()
.alphanum()
.min(3)
.max(30)
.required(),password: Joi.string()
.pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),repeat_password: Joi.ref('password'),email: Joi.string()
.email({ minDomainSegments: 2,tlds: { allow: ['com','net'] } }),//add this in your code
phone:Joi.allow(),name:Joi.allow()
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。