req.checkBody('cgpa','cgpa is required').notEmpty();


我需要向cgpa添加验证以检查cgpa必须小于4。我该怎么办?
我正在使用expressjs验证器
谢谢 。

最佳答案

您可以使用快速验证器的custom(validator)


  定制验证器还可能抛出JavaScript异常(例如,抛出new Error())并返回假值以指示该字段无效。


您可以像安装其他任何快速中间件一样安装它

'use strict';

let http = require('http');
let express = require('express');

let app = express();
let bp = require('body-parser');

app.use(bp.json());
app.use(bp.urlencoded({
  extended: false
}));

let server = http.createServer(app);
const {check, validationResult} = require('express-validator/check');

const PORT = 8888;
server.listen(PORT, () => {

  console.log(`Server is up at ${PORT}`);

  app.post('/foo', [

    check('cgpa').exists().custom((value) => {
      return value < 4;
    }).withMessage('CGPA should be less than 4')

  ], (req, res) => {

    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(422).json({
        errors: errors.mapped()
      });
    }

    return res.status(200).send({
      msg: 'Hello world'
    });
  });

});


如果cgpa

  {
      “ msg”:“ Hello world”
  }


如果cgpa> 4,则响应将为错误


  {
      “错误”:{
          “ cgpa”:{
              “ location”:“ body”,
              “ param”:“ cgpa”,
              “值”:43
              “ msg”:“ CGPA应该小于4”
          }
      }
  }

09-18 15:49