如果你正在开发一个 Node.js 的 Web 应用,那么对用户输入的数据进行验证是非常重要的。在 Node.js 中,我们可以使用 express-validator 库来方便地实现数据验证。本文将介绍如何使用 express-validator 进行数据验证。
安装 express-validator
首先,我们需要安装 express-validator 库。可以使用以下命令来安装:
npm install express-validator
使用 express-validator 进行数据验证
使用 express-validator 进行数据验证的过程分为以下几步:
- 引入 express-validator 库
const { body, validationResult } = require('express-validator');
- 在路由中使用验证器
在路由中使用验证器,需要使用 body()
方法来定义要验证的字段,然后可以链式调用各种验证方法,如 isEmail()
,isLength()
,isInt()
等。
以下代码演示了如何验证一个包含 name、email、password 字段的表单:
app.post('/register', [ body('name').notEmpty().withMessage('姓名不能为空'), body('email').isEmail().withMessage('请输入正确的邮箱'), body('password').isLength({ min: 6 }).withMessage('密码长度不能少于 6 位') ], async (req, res) => { // 处理表单提交 });
以上代码表示,name 字段不能为空,email 字段必须是合法的邮箱格式,password 字段长度不能少于 6 位。如果验证失败,就会返回错误信息。我们可以在后面加上 .withMessage()
方法来自定义错误信息。
- 获取验证结果
我们可以使用 validationResult()
方法来获取验证结果,如果验证成功,validationResult()
方法将返回一个空数组,否则将返回一个包含所有错误信息的数组。
以下代码演示如何获取验证结果:
// javascriptcn.com 代码示例 app.post('/register', [ /* ... */ ], async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(422).json({ errors: errors.array() }); } // 处理表单提交 });
以上代码表示,如果验证失败,将返回一个包含所有错误信息的数组。
express-validator 的常用验证方法
以下是 express-validator 常用的验证方法:
方法名 | 描述 |
---|---|
isEmail() |
验证字符串是否为合法的电子邮件地址 |
isLength() |
验证字符串的长度是否在指定范围内 |
isInt() |
验证字符串是否为整数 |
isNumeric() |
验证字符串是否为数字 |
isAscii() |
验证字符串是否仅包含 ASCII 字符 |
isAlphanumeric() |
验证字符是否为字母和数字 |
isURL() |
验证字符串是否为 URL |
isIn() |
验证字符串是否包含在指定数组中 |
isMongoId() |
验证字符串是否为 MongoDB 的 ObjectID |
isPostalCode() |
验证字符串是否为邮政编码 |
isMobilePhone() |
验证字符串是否为手机号码 |
使用自定义验证方法
如果 express-validator 提供的验证方法还不够用,你可以自定义验证方法。要定义一个自定义验证方法,可以使用 body()
方法返回的对象的 custom()
方法来定义一个验证函数,该函数将接收当前字段的值作为参数,如果验证失败,应该返回一个 Promise,否则应该返回 null。
以下示例演示如何使用自定义验证方法:
// javascriptcn.com 代码示例 app.post('/register', [ body('name') .notEmpty().withMessage('姓名不能为空') .custom((value) => { if (!/^[\u4E00-\u9FFF]+$/.test(value)) { throw new Error('姓名必须为中文'); } return true; }) ], async (req, res) => { // 处理表单提交 });
以上代码表示,我们自定义了一个方法来验证姓名必须为中文,如果验证失败,将返回一个错误信息。
总结
本文介绍了如何在 Node.js 中使用 express-validator 库来进行数据验证。我们可以使用 body()
来定义要验证的字段,然后可以链式调用各种验证方法来验证其值是否符合要求。除此之外,我们还介绍了自定义验证方法的使用。如果你正在开发一个 Node.js 的 Web 应用,使用 express-validator 库来进行数据验证将会非常方便。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6582e4b2d2f5e1655ddf423c