问题描述
我为用户使用以下Joi模式:
const userRules = Joi.object({
name: Joi.string().pattern(new RegExp('^[A-Za-zÁÉÍÓÚáéíóúãõÃÕâêôÂÊÔ ]+$')).required(),email: Joi.string().email().required(),password: Joi.string().min(8).max(40).required()
});
但是出于身份验证的目的,我只想验证email
和password
,而忽略name
。不必创建其他架构就可以做到这一点吗?
解决方法
这将忽略name
:
const userRules = Joi.object({
email: Joi.string().email().required(),password: Joi.string().min(8).max(40).required()
})
.options({allowUnknown: true});
,
您可以使用 Joi.fork()
从基础架构创建派生架构。
const userRules = Joi.object({
name: Joi.string().pattern(new RegExp('^[A-Za-zÁÉÍÓÚáéíóúãõÃÕâêôÂÊÔ ]+$')).required(),email: Joi.string().email().required(),password: Joi.string().min(8).max(40).required()
});
const authSchema = userRules.fork(['name'],(schema) => schema.optional())
现在,在 authSchema
中,name
属性是可选的,可以忽略。