k00*_*00k 2 validation trim node.js express
我首先在我的 api (Express 3.3.8) 中使用express-form,以便从传入的 POSTed 字段中修剪前导和尾随空格。
但是,我相信要使用它,我必须将中间件中的表单字段和规则包含到我的路由中,如下所示:
app.post('/api/test', form(
field("username").trim(),
field("password").trim(), function(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();
}
Run Code Online (Sandbox Code Playgroud)
"body-parser"在使用postTrimmer中间件之前不要忘记打开模块。
由于似乎必须使用 单独声明字段express-form,因此我决定暂时编写自己的空白修剪中间件,因为我找不到现有的简单解决方案。我使用underscore.js,所以你会看到它的map功能在使用中。否则,您可以使用本机或类似的程序进行自己的循环Object.keys。req.body这完全重写了!中的所有字段。请注意,这是解决更大验证问题的权宜之计。我们只是暂时这样做,直到我们有时间清理整个验证。这是我的代码(app.use(app.router)当然放在前面):
var trimmer = function(req, res, next){
req.body = _.object(_.map(req.body, function (value, key) {
return [key, value.trim()];
}));
next();
}
app.use(trimmer);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4157 次 |
| 最近记录: |