我开始以使用express-form我的API(快速3.3.8)修剪开头和结尾的空白关闭传入POST方法字段。
不过,我相信使用它,我必须在我的中间件表单字段和规则,以我的路线,像这样:
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
。如果有另一种方法已经提供给有快递总是修剪传入req.body
领域,请让我知道。
因为它似乎一个必须单独使用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);
app.use(postTrimmer);
function postTrimmer(req, res, next) {
if (req.method === 'POST') {
for (const [key, value] of Object.entries(req.body)) {
req.body[key] = value.trim();
}
}
next();
}
不要忘记使用"body-parser"
中间件前关闭postTrimmer
模块。