在Node.Js中的express-validator之前修剪输入值

时间:2017-09-14 07:48:28

标签: javascript node.js validation express-validator

我在Node.js项目中使用了建议的快速验证器V4语法:

const { check, validationResult } = require('express-validator/check');
const { matchedData } = require('express-validator/filter');

app.post('/users/add/',[
check('first_name')
.isLength({ min: 1 }).withMessage('A first name is required')],
(req, res, next) => {
  var errors = validationResult(req);
  if (errors) {
     ..etc

请注意,我使用的是现代语法,并且没有以下代码(如 根据express-validator README.md文件):

const expressValidator = require('express-validator');
app.use(expressValidator());

如何在运行验证之前从输入字段修剪空格?

2 个答案:

答案 0 :(得分:2)

您应该在.trim()之前使用.check()

check('first_name').trim().isLength({ min: 1 }).withMessage('A first name is required')]

希望这有帮助!

答案 1 :(得分:0)

以下工作可能有所帮助,但我认为最好的解决方案是以流利的方式支持卫生。我的工作的缺点是输入的处理现在在两个地方。

  1. 将所需的卫生功能添加到require子句:

    const { trim } = require('express-validator').validator
    
  2. 调整请求处理:

    app.post('/users/add/',
     (req, res, next) => {
    req.body.first_name = trim(req.body.first_name);
    req.body.last_name = trim(req.body.last_name);
    req.body.email = trim(req.body.email);
    next();
    },
    [check('first_name')
    .isLength({ min: 1 }).withMessage('A first name is required')],
    (req, res, next) => {
     var errors = validationResult(req);
     if (errors) {
    ..etc