在现代 Web 开发中,数据验证是前后端交互中不可或缺的环节。而为了减少开发者在数据验证上的工作量,社区中应运而生了各种优秀的验证库。其中,@expresso/validator 是一款轻量级的数据验证工具,可用于验证传入的表单数据、请求参数等。
本文将介绍如何使用 @expresso/validator 进行数据验证。
安装
使用 npm 命令安装 @expresso/validator:
npm install @expresso/validator
基本使用
安装完毕后,我们就可以在代码中使用 @expresso/validator 了。
首先,引入 validator:
const Validator = require('@expresso/validator');
然后,创建一个 Validator 实例:
const validator = new Validator();
现在,我们可以开始编写验证函数了:
-- -------------------- ---- ------- ----- ------ - - ------ - ----- -------- --------- ---- -- --------- - ----- --------- --------- ----- ---------- - - -- ----- ---- - - ------ ------------------- --------- ---------- -- ------------------------ ------- -------- -- - -- ------ --------------------- -- --------------- -- - -- ------ -------------------- -------- ---
在上述代码中,我们定义了一个名为 schema 的验证规则对象,该对象表示要验证的数据字段及其验证规则。然后,我们定义了一个名为 data 的数据对象,该对象包含了我们要验证的数据。最后,我们调用了 validator 实例的 validate 方法,该方法接受两个参数,分别为要验证的数据对象和验证规则对象。
如果数据验证成功,validate 方法返回一个 Promise 对象,该对象的 then 回调函数会被执行。否则,validate 方法会抛出一个错误对象(具体格式请参阅下文“错误处理”部分)。
验证规则
@expresso/validator 支持多种数据类型和验证规则。下面是一些常用的验证规则示例:
required
用于检查字段是否为空:
const schema = { email: { type: 'email', required: true } };
type
用于检查字段是否属于某个类型:
-- -------------------- ---- ------- ----- ------ - - ---- - ----- -------- -- ----- - ----- -------- -- ---------- - ----- --------- - --
支持的数据类型包括:
- string(字符串)
- number(数字)
- boolean(布尔型)
- date(日期)
- email(电子邮件地址)
- url(URL 地址)
minLength、maxLength
用于检查字符串类型字段的最小长度、最大长度:
const schema = { description: { type: 'string', minLength: 10, maxLength: 500 } };
min、max
用于检查数字类型字段的最小值、最大值:
const schema = { age: { type: 'number', min: 18, max: 60 } };
错误处理
如果数据验证失败,validate 方法会抛出一个错误对象。该对象包含一个 errors 属性,该属性为一个数组,包含了验证失败的信息。每一条错误信息均有以下格式:
{ field: 'email', message: '邮箱格式不正确' }
其中,field 表示验证失败的字段名称,message 表示错误消息。如果一个字段有多个验证规则,那么其可能会有多条错误信息。
为了更方便地处理验证失败的错误信息,@expresso/validator 为错误对象提供了一个 usefulErrors 属性,该属性为一个二维数组,包含了每个字段的错误信息:
validator.validate(data, schema) .catch((error) => { console.log(error.usefulErrors); });
在上述代码中,我们调用了错误对象的 usefulErrors 属性。该属性的输出结果如下:
-- -------------------- ---- ------- - - - ------ -------- -------- -------- - -- - - ------ ----------- -------- --------- - -- - - -
使用该属性,我们可以更方便地处理验证失败的错误信息。
自定义验证规则
@expresso/validator 并不支持扩展自定义验证规则,不过我们可以使用原生的 JavaScript 实现自定义验证规则。
例如,我们希望验证用户名必须以大写字母开头,那么就可以这样写:
-- -------------------- ---- ------- ----- ------ - - --------- - --------------- - -- ------------------------------------ --- ------ - ----- --- ---------------------- - - - --
在上面的示例中,我们为用户名字段添加了一个 validate 属性,并通过 test 方法验证了用户名的格式。
小结
本文介绍了如何使用 @expresso/validator 进行数据验证。我们了解了基本使用方法、验证规则、错误处理和自定义验证规则等内容。
使用 @expresso/validator 无疑可以大大降低我们在数据验证上的工作量,同时也能够很好地提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/154486