javascript - Trim input values before express-validator in Node.Js - Stack Overflow

I'm using the suggested V4 syntax of express-validator in a Node.js project:const { check, validat

I'm using the suggested V4 syntax of express-validator in a Node.js project:

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

and

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

Note that I am using the modern syntax and do not have the following code (as per the express-validator README.md file):

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

How do I trim blank spaces from the input field before running the validation?

I'm using the suggested V4 syntax of express-validator in a Node.js project:

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

and

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

Note that I am using the modern syntax and do not have the following code (as per the express-validator README.md file):

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

How do I trim blank spaces from the input field before running the validation?

Share Improve this question asked Sep 14, 2017 at 7:48 SteveCSteveC 6877 silver badges12 bronze badges 1
  • As of v4.1.1, sanitization is only available in the legacy APIs, but please open an issue in the GitHub tracker requesting support in the new APIs. – gustavohenke Commented Sep 14, 2017 at 11:55
Add a ment  | 

2 Answers 2

Reset to default 6

You should use .trim() before your .check() like this,

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

Hope this helps!

The following work around may help, though I think the best solution would be to support sanitation in a fluent manner. The downside of my work around is that the processing of input is now in two places.

  1. Add the required sanitation functions to requires clause:

    const { trim } = require('express-validator').validator
    
  2. Adjust the request processing:

    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
    

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742311861a4420052.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信