【问题标题】:Trim input values before express-validator in Node.Js在 Node.Js 中的 express-validator 之前修剪输入值
【发布时间】:2017-09-14 07:48:28
【问题描述】:

我在 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());

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

【问题讨论】:

  • 从 v4.1.1 开始,清理仅在旧 API 中可用,但请在 GitHub 跟踪器中打开一个问题,请求对新 API 的支持。

标签: javascript node.js validation express-validator


【解决方案1】:

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

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

希望这会有所帮助!

【讨论】:

  • 清理功能目前仅在旧版 API 中可用
  • 现在可以从 v4.2.0 开始使用 :)
【解决方案2】:

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

  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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2021-07-04
    • 2022-01-11
    • 2017-07-21
    相关资源
    最近更新 更多