2

我在 Node.js 项目中使用建议的 express-validator 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());

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

4

2 回答 2

5

你应该.trim()在你.check()这样之前使用,

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

希望这可以帮助!

于 2017-09-14T08:04:21.973 回答
0

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

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

    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
    
于 2017-09-15T06:05:16.703 回答