[TOC]
### egg-validate的定制化升級
* [ ] egg-validate 基于 parameter 定制,可以用它所有的規則
* [ ] 文檔:[https://github.com/node-modules/parameter](https://github.com/node-modules/parameter)

*****
### 定制化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類