const joi = require("joi"); // .string():数据必须为字符串类 // .number():数据必须为数字类型 // .integer():数据必须为整数类型 // .alphanum():数据只能包含[a-zA-Z0-9]的字符 // .max(number|string):number:最大长度 | string:最大日期 // .min(number|string):number:最小长度 | string:最小日期 // .required():数据为必填项,不能为null或undefined // .pattern(正则表达式):以正则表达式的形式验证数据 // .regex(正则表达式):定义字段必须匹配正则规则。 // .email():验证邮箱 // .joi.ref(key:string):引言同辈的键值,就是拿到value // .not(values:any[]):当前属性的值不能同参数值相同 // .valid(…values:any[]):当前属性的值必须于参数值相同 // .dataUri():当前字段为可以是URL地址 // .allow(…values:any[]):该字段允许为指定参数的值 // .default(any[]):设置该字段的默认值,值可以为string、number、boolean……等 // .error(new Error(‘错误信息’)):在不符合验证条件的时候会返回错误信息 const username = joi.string().min(3).max(10).required().error(new Error("请输入正确规则的用户名")) const password = joi.string().pattern(/^[\S]{6,12}$/).required().error(new Error("请输入正确规则的密码")) exports.regSchema = { body: { username, password } }; const id = joi.number().integer().min(1).required() const nickname = joi.string().required() const email = joi.string().email().required() exports.updataUserInfoSchema = { body: { id, nickname, email } }; exports.updataUserPwdSchema = { body: { //使用password这个规则,验证req.body.oldPwd的值 oldPwd: password, //使用joi.not(joi.ref('oldPwd')).concat(password)规则,验证req.body.newPwd的值 //解读 //1.joi.ref('oldPwd') 表示newPwd和oldPwd的值保持一致 //2.joi.not(joi.ref('oldPwd'))表示newPwd的值不能等于oldPwd的值 //3. .concat()用于合并joi.not(joi.ref('oldPwd'))和pasword两条规则 newPwd: joi.not(joi.ref('oldPwd')).concat(password) } }; const avatar = joi.string().dataUri().required(); exports.updateUserAvatarSchema = { body: { avatar } };