ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ### egg-validate的定制化升级 * [ ] egg-validate 基于 parameter 定制,可以用它所有的规则 * [ ] 文档:[https://github.com/node-modules/parameter](https://github.com/node-modules/parameter) ![](https://box.kancloud.cn/6d21d87788018025a37f52f8ffcff03d_807x485.png) ***** ### 定制化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] 这样就可以用自定义规则了