user.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const joi = require("joi");
  2. // .string():数据必须为字符串类
  3. // .number():数据必须为数字类型
  4. // .integer():数据必须为整数类型
  5. // .alphanum():数据只能包含[a-zA-Z0-9]的字符
  6. // .max(number|string):number:最大长度 | string:最大日期
  7. // .min(number|string):number:最小长度 | string:最小日期
  8. // .required():数据为必填项,不能为null或undefined
  9. // .pattern(正则表达式):以正则表达式的形式验证数据
  10. // .regex(正则表达式):定义字段必须匹配正则规则。
  11. // .email():验证邮箱
  12. // .joi.ref(key:string):引言同辈的键值,就是拿到value
  13. // .not(values:any[]):当前属性的值不能同参数值相同
  14. // .valid(…values:any[]):当前属性的值必须于参数值相同
  15. // .dataUri():当前字段为可以是URL地址
  16. // .allow(…values:any[]):该字段允许为指定参数的值
  17. // .default(any[]):设置该字段的默认值,值可以为string、number、boolean……等
  18. // .error(new Error(‘错误信息’)):在不符合验证条件的时候会返回错误信息
  19. const username = joi.string().min(3).max(10).required().error(new Error("请输入正确规则的用户名"))
  20. const password = joi.string().pattern(/^[\S]{6,12}$/).required().error(new Error("请输入正确规则的密码"))
  21. exports.regSchema = {
  22. body: {
  23. username,
  24. password
  25. }
  26. };
  27. const id = joi.number().integer().min(1).required()
  28. const nickname = joi.string().required()
  29. const email = joi.string().email().required()
  30. exports.updataUserInfoSchema = {
  31. body: {
  32. id,
  33. nickname,
  34. email
  35. }
  36. };
  37. exports.updataUserPwdSchema = {
  38. body: {
  39. //使用password这个规则,验证req.body.oldPwd的值
  40. oldPwd: password,
  41. //使用joi.not(joi.ref('oldPwd')).concat(password)规则,验证req.body.newPwd的值
  42. //解读
  43. //1.joi.ref('oldPwd') 表示newPwd和oldPwd的值保持一致
  44. //2.joi.not(joi.ref('oldPwd'))表示newPwd的值不能等于oldPwd的值
  45. //3. .concat()用于合并joi.not(joi.ref('oldPwd'))和pasword两条规则
  46. newPwd: joi.not(joi.ref('oldPwd')).concat(password)
  47. }
  48. };
  49. const avatar = joi.string().dataUri().required();
  50. exports.updateUserAvatarSchema = {
  51. body: {
  52. avatar
  53. }
  54. };