Node.js进阶 --- Express-validator表单验证器

Node.js进阶 — Express-validator表单验证器

TIP

源码地址:https://github.com/express-validator/express-validator

使用 express-validator 可以简化 POST 请求的参数验证,使用方法如下:

安装:

npm i -S express-validator

验证:

const { body, validationResult } = require('express-validator')
const boom = require('boom')

router.post(
  '/login',
  [
    body('username').isString().withMessage('username类型不正确'),
    body('password').isString().withMessage('password类型不正确')
  ],
  function(req, res, next) {
    const err = validationResult(req)
    if (!err.isEmpty()) {
      const [{ msg }] = err.errors
      next(boom.badRequest(msg))
    } else {
      const username = req.body.username
      const password = md5(`${req.body.password}${PWD_SALT}`)

      login(username, password).then(user => {
        if (!user || user.length === 0) {
          new Result('登录失败').fail(res)
        } else {
          new Result('登录成功').success(res)
        }
      })
    }
  })

express-validator 使用技巧:

  • router.post 方法中使用 body 方法判断参数类型,并指定出错时的提示信息
  • 使用 const err = validationResult(req) 获取错误信息,err.errors 是一个数组,包含所有错误信息,如果 err.errors 为空则表示校验成功,没有参数错误
  • 如果发现错误我们可以使用 next(boom.badRequest(msg)) 抛出异常,交给我们自定义的异常处理方法进行处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于数据库操作,Node.js 有许多可选的模块和库可以使用。一种常见的选择是使用 `mysql`、`mongodb` 或 `sequelize` 模块来连接和操作数据库。这些模块提供了简单的接口来执行查询、插入、更新和删除等操作。 例如,如果你使用MySQL数据库,你可以使用 `mysql` 模块来连接到数据库并执行查询。以下是一个简单的示例: ```javascript const mysql = require('mysql'); // 创建数据库连接 const connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'password', database: 'database_name' }); // 连接到数据库 connection.connect((err) => { if (err) throw err; console.log('Connected to the database!'); }); // 执行查询 connection.query('SELECT * FROM tablename', (err, results) => { if (err) throw err; console.log(results); }); // 关闭连接 connection.end(); ``` 关于表单验证Node.js 有许多库可以帮助你处理表单数据的验证和验证错误的处理。一些 popular 的表单验证库包括 `express-validator` 和 `joi`。 使用 `express-validator` 的示例代码如下: ```javascript const { body, validationResult } = require('express-validator'); const express = require('express'); const app = express(); // 定义一个路由处理程序 app.post('/create', [ // 对表单字段进行验证 body('username').notEmpty().withMessage('Username is required'), body('email').isEmail().withMessage('Invalid email'), body('password').isLength({ min: 6 }).withMessage('Password must be at least 6 characters long'), ], (req, res) => { // 检查验证错误 const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } // 处理表单数据 // ... // 返回成功的响应 res.json({ message: 'Form submitted successfully' }); }); app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 以上是一些基本的示例代码,你可以根据自己的需求和数据库选择进行修改和扩展。希望能对你有所帮助!如果有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值