egg-validate

优质
小牛编辑
139浏览
2023-12-01

egg-validate的定制化升级

  1. 建立 app.js 入口文件

    
    'use strict'
    const path = require('path')
    class AppBootHook {
    
     constructor(app) {
         this.app = app;
     }
    
     async didLoad() {
         // 引入validate目录,并注入app实例
         const directory = path.join(this.app.config.baseDir, 'app/validate');
         app.loader.loadToApp(directory, 'validate');
     }

}

module.exports = AppBootHook;


2. 建立自定义规则校验文件
app/validate/user.js
```
module.exports = app =>{

  let { validator } = app;

  // 校验用户名是否正确
  validator.addRule('userName', (rule, value)=>{
    console.log(rule);
    if (/^d+$/.test(value)) {
      return "用户名应该是字符串";
    }
    else if (value.length < 3 || value.length > 10) {
      console.log("用户名的长度应该在3-10之间");
    }
  });

  // 添加自定义参数校验规则
  validator.addRule('123', (rule, value) => {
    if (value !== '123'){
      return 'must be 123';
    }
  });
};
```
4. 参数校验
```
ctx.validate({username:{type:'userName'}}, ctx.request.body )
```
>[danger] 这样就可以用自定义规则了