猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 >

thinkjs 自定义验证规则

2018-09-09 12:01:37 作者:yxl 次阅读 技术专栏

全局定义校验规则

在单模块下项目下的 config 目录下建立 validator.js 文件;在多模块项目下的 common/config 目录下建立 validator.js。在 validator.js 中添加自定义的校验方法:

例如, 我们想要验证 GET 请求中的 name1 参数是否等于字符串 lucy 可以如下添加校验规则; 访问你的服务器地址/index/?name1=jack

// logic index.jsmodule.exports = class extends think.Logic {
  indexAction() {    let rules = {      name1: {        eqLucy: 'lucy',        method: 'GET'
      }
    }    let flag = this.validate(rules);    if(!flag) {      console.log(this.validateErrors); // name1 shoud eq lucy
    }
  }
  }
}// src/config/validator.jsmodule.exports = {  rules: {
    eqLucy(value, { argName, validName, validValue, parsedValidValue, rule, rules, currentQuery, ctx}) {      return value === validValue;
    }
  },  messages: {    eqLucy: '{name} should eq {args}'
  }
}

自定义的校验方法会被注入以下参数,对于上述例子来说

(
  value: ,                // 参数在相应的请求中的值,此处为 ctx['param']['name1']
  {
    argName,              // 参数名称,此处为 name1
    validName,            // 校验方法名,此处为 'eqLucy'
    validValue,           // 校验方法名对应的值,此处为 'lucy'
    parsedValidValue,      // _eqLucy 方法解析返回的结果, 如果没有 _eqLucy 方法,则为 validValue
    currentQuery,         // 当前请求类型的值,此处为 ctx['param'] (表示从 ctx 中获取到 get 类型的参数)
    ctx,                  // ctx 对象
    rule,                 // 校验规则内容,此处为 {eqLucy: 'lucy', method: 'GET'}
    rules,                // 所有的校验规则内容,此处为 let rules 的值
  }
)


凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词: think
0

网友评论