Egg項目做請求字段驗證-egg-validate-plus

開篇

近期在倒騰Github上一個已經(jīng)開源的項目,其技術(shù)棧為egg+sequelize+mysql+react,最重要的是還有配套視頻,是一個很好的全棧練習(xí),下面也給大家分享一下。愛掏網(wǎng) - it200.com

Instagram 開源項目 ts版

作者:zhoushaw

項目介紹:地址

開源代碼:代碼

Instagram 開源項目 js版

作者:旅夢開發(fā)團

項目介紹內(nèi)附視頻地址:地址

開源代碼:代碼

好吧還沒有進入今天的主題

egg-validate-plus

該插件是為前端請求字段做驗證用的,那么為什么要用它呢,這里展示一下插件作者文檔里的說明

  • 為什么要自己造輪子? 其實 egg 官方有一個egg-validate插件,非常的優(yōu)秀。愛掏網(wǎng) - it200.com但是我覺得有幾個不滿意的地方:
    • 不能使用自定義錯誤提示
    • 類型校驗兼容性差
    • 非必填校驗兼容性差
  • 提供哪些更好的體驗?
    • 使用自定義錯誤提示
    • 提供更多的類型校驗
    • 兼容更多非必填校驗場景

具體的安裝配置文檔這里不再詳細說明(見文檔),這里只為常用的使用方法做一個較全面的展示,也算是一個例子吧。愛掏網(wǎng) - it200.com

?安裝配置請參照文檔

rules中規(guī)則的編寫,參見 async-validator中驗證規(guī)則的編寫

?代碼組織結(jié)構(gòu)

--app
----controller
------login.js
----rules
------login
--------signIn.js

添加signIn.js規(guī)則

'use strict';

const rule = {
  email: [
    { required: true, message: '郵箱不能為空' },
    { type: 'email', message: '郵箱格式不正確' },
  ],
  password: [
    { required: true, message: '密碼不能為空' },
    { type: 'string', message: '密碼字段需要是字符串' },
    {
      // eslint-disable-next-line no-unused-vars
      validator(rule, value, callback, source, options) {
        const pattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/;
        if (pattern.test(value)) {
          callback(); // 驗證通過
          return;
        }
        callback({ message: '密碼最少包含一個大小寫字母、數(shù)字并且為8-16位' }); // 驗證不通過
      },
    },
  ],
};

module.exports = rule;

?controller中l(wèi)ogin.js使用

'use strict';

const Controller = require('egg').Controller;

class LoginController extends Controller {
  async loginIn() {
    const { ctx, app } = this;
    const { email, password } = ctx.request.body;

    const validateResult = await ctx.validate('login.signIn', { email, password }); // 第一個參數(shù)對應(yīng)于rules目錄下目錄或文件
    if (!validateResult) {
      return;
    }

    const loginInfo = await ctx.service.user.login({ password, email });
    // 省略部分代碼
    ctx.returnBody(200, '登錄成功', loginInfo.userId); // returnBody方法是基于context的擴展
  }
}

module.exports = LoginController;

context.js擴展

'use strict';

module.exports = {
  returnBody(status, message, data = null) {
    this.status = status;
    this.body = {
      message,
      data,
      flag: true,
    };
  },
};

結(jié)尾

后期把自己仿的項目也會放上來,采用技術(shù)棧為

create-react-app + less + mobx + flyio + egg + sequelize + mysql

聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 国产精品日韩欧美久久综合| 日韩精品中文字幕在线观看| 欧美亚洲国产一区二区三区| 国产精品乳摇在线播放| 免费中文字幕视频| 中文字幕国产欧美| 精品国产一二三区在线影院| 无码人妻精品一区二区三区蜜桃| 国产真**女人特级毛片| 久久精品中文无码资源站| 2018天天干夜夜操| 爆乳少妇在办公室在线观看| 性欧美video在线播放| 你懂得的在线观看免费视频| 一本色道久久综合亚洲精品| 特级精品毛片免费观看| 夫妇交换性3中文字幕| 加勒比黑人在线| 七次郎最新首页在线视频| 老子午夜精品我不卡影院| 日本全黄三级在线观看| 八戒八戒在线观看免费视频| 一级特黄性色生活片录像| 网址你懂的在线观看| 成人黄18免费视频| 国产99视频精品免费视频7| 久久久久国产一区二区| 韩国五感图r级无删减版| 性做久久久久久久| 亚洲国产精品毛片AV不卡在线| 麻豆精品一区二区综合av| 日韩欧国产精品一区综合无码| 国产噜噜在线视频观看| 久久无码专区国产精品| 精品国产亚洲AV麻豆| 国产精品成人va在线观看入口| 亚洲国产成人va在线观看网址| 英语老师解开裙子坐我腿中间| 无遮挡1000部拍拍拍免费凤凰| 人人揉人人爽五月天视频| 999任你躁在线精品免费不卡|