[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] 这样就可以用自定义规则了
- 概述
- 起步
- 跨域配置
- 路径别名
- 路由
- api版本控制
- 错误和异常
- 全局异常处理
- 数据库
- 创建迁移文件
- sequelize数据类型
- 配置
- 新增
- 查询
- 条件查询
- 模糊查询
- 排序查询
- 聚合查询
- 分组查询
- 分页查询
- 修改
- 删除
- 获取器
- 修改器
- 静态属性
- 字段验证
- 外键约束
- 关联模型
- 一对一
- 一对多
- 左外连接
- 多对多
- 字段显示隐藏
- 事务
- 字段自增
- 验证层
- egg-validate
- indicative验证器
- egg-validate-plus
- betterValidate
- 校验规则
- 中间件
- 安全
- 数据加密
- 单向加密
- 示例代码
- 封装egg加密
- 上传
- path模块
- 单文件上传
- 多文件上传
- 按照日期存储
- 工具函数
- egg常用工具函数
- 缓存
- 配置缓存插件
- 设置缓存
- 获取缓存
- 删除缓存
- 消息队列
- rabbitMQ
- 安装
- 简单队列
- 工作队列
- 工作队列(dispach分发)
- 消息应答和持久化
- redis
- 数据类型
- 字符串类型(String)
- 哈希类型(Hash)
- 列表(List)
- 无序集合(Set)
- 可排序集合(Zset)
- 邮件系统
- nodeMailer
- 第三方模块
- 生成随机数
- JWT
- JWT鉴权
- 生成Token
- 短信服务
- 阿里大鱼短信验证码
- 发送短信逻辑
- 阿里短信Node类