node.js - 使用 Express,我可以自动修剪 req.body 中所有传入的 POSTed 字段吗?

标签 node.js validation express trim

我首先使用 express-form使用我的 api (Express 3.3.8) 来修剪传入的 POSTed 字段的前导和尾随空白。

但是,我相信要使用它,我必须将中间件中的表单字段和规则包含到我的路由中,如下所示:

app.post('/api/test', form( 字段(“用户名”).trim(), 字段(“密码”).trim(),函数(req,res...

我的问题是,有没有办法在不单独指定字段的情况下自动进行修剪?我知道配置选项:autoTrim,但我认为我仍然需要在每个路由/中间件的基础上指定字段,对吗?我尝试将其排除在中间件之外,只执行 form.configure({autoTrim:true}),但 req.body 字段没有任何变化。就像我根本没有包含 express-form 一样。

我不致力于express-form。如果有另一种方法可以让 Express 始终修剪传入的 req.body 字段,请告诉我。

最佳答案

app.use(postTrimmer);

function postTrimmer(req, res, next) {
    if (req.method === 'POST') {
        for (const [key, value] of Object.entries(req.body)) {
            if (typeof(value) === 'string')
                req.body[key] = value.trim();
        }
    }
    next();
}

在使用 postTrimmer 中间件之前,不要忘记打开 "body-parser" 模块。

关于node.js - 使用 Express,我可以自动修剪 req.body 中所有传入的 POSTed 字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266295/

相关文章:

angularjs - $location.search 不起作用 - Angular 1.6.4

javascript - Node API等待外部数据

node.js - 无法在 Node 中发送邮件,出现 UnhandledPromiseRejectionWarning 错误

javascript - HTML <input> 必需属性无法阻止表单在 Apps 脚本应用程序中提交

database - 在加载 Express 4.x 之前启动数据库连接

javascript - Vue.js 与服务 POST 请求不兼容吗?

google-chrome - Chrome 开发者工具中的 Webpack 3.5.5 调试显示两个源文件。 webpack下1个://and other under webpack-internal://

node.js - Jenkins 上 dalek 的 Nodejs 插件配置问题

javascript - PHP/JavaScript 表单验证,无效电子邮件检查

javascript - 如果选中复选框,则需要输入