在Web开发中,我们经常需要对用户输入的数据进行校验,例如某个输入框不能为空,某个表单项需要符合正则表达式等。这时候,我们可以使用 npm 包 egg-property-validator 来进行数据校验。
简介
egg-property-validator 是一款基于 property-validator 的 egg 插件,提供了针对 egg 应用程序的数据验证功能,可以方便快捷地验证各种类型的数据。
安装
通过 npm 安装 egg-property-validator:
$ npm install egg-property-validator --save
然后,在配置文件 config/plugin.js
中启用插件:
exports.validator = { enable: true, package: 'egg-property-validator', };
使用方法
配置验证规则
我们可以在 app/validator/
目录下定义一个验证规则的 js 文件,例如定义一个 user.js
文件,里面可以编写如下代码:
exports.create = { name: { type: 'string', required: true }, age: { type: 'int', min: 0, max: 150 }, gender: { type: 'enum', values: [ 'male', 'female' ] }, email: { type: 'email' }, };
上面的代码定义了一个名为 create
的验证规则,包含了 name
、age
、gender
、email
四个属性。每个属性都可以设置类型、是否必填、最大最小值、枚举值等等。
验证请求参数
在我们的 Controller 中,可以使用 this.ctx.validate(rule, data)
方法来验证请求参数。rule
参数为验证规则,可以是一个文件名,也可以直接是一个规则对象;data
参数为待验证的数据,可以是 Query、Body 等参数。具体使用方法可以参考下面的示例代码:
-- -------------------- ---- ------- ----- ---------- - -------------------------- ----- -------------- ------- ---------- - ----- -------- - ----- - --- - - ----- -- ------ --------------------------- ------------------ -- ----- ------ - -
自定义错误信息
默认情况下,如果校验未通过,egg-property-validator 会抛出一个 422
状态码的异常,并返回一个错误信息的 JSON 对象。如果需要自定义错误信息,我们可以在验证规则中添加 message
属性,例如:
exports.create = { name: { type: 'string', required: true, message: '请填写姓名' }, age: { type: 'int', min: 0, max: 150, message: '请输入正确的年龄' }, gender: { type: 'enum', values: [ 'male', 'female' ], message: '请选择正确的性别' }, email: { type: 'email', message: '请输入正确的邮箱地址' }, };
这样,在校验失败时就会返回自定义的错误信息。
示例代码
下面是一个完整的示例代码,包含了定义验证规则、验证请求参数以及自定义错误信息的方法:
-- -------------------- ---- ------- -- --------------------- -------------- - - ----- - ----- --------- --------- ----- -------- ------- -- ---- - ----- ------ ---- -- ---- ---- -------- ---------- -- ------- - ----- ------- ------- - ------- -------- -- -------- ---------- -- ------ - ----- -------- -------- ------------ -- -- -- ---------------------- ----- ---------- - -------------------------- ----- -------------- ------- ---------- - ----- -------- - ----- - --- - - ----- -- ------ --------------------------- ------------------ -- ----- ------ - -
这样,我们就可以在 egg 应用程序中方便地使用 egg-property-validator 进行数据校验了。
总结
egg-property-validator 是一款方便快捷的数据验证工具,可以大大提高 Web 开发中数据校验的工作效率。通过学习本文,我们可以掌握 egg-property-validator 的基本使用方法,应用到实际的项目中去。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cc281e8991b448e6408