在快递中,可以将输入命名为
<input name="obj[field1]">
<input name="obj[field2]">
获取 req.body.obj 作为格式化对象。
相反的可能吗?(即:在输入中给出一个对象并填充相应的字段)
不,这是不可能的。res.locals
最接近的解决方案是使用或将数据传递给视图app.locals
。
应用程序.js
app.locals({ foo: 'foo', bar: 'bar' });
索引.jade
input(value=locals.foo)
input(value=locals.bar)
如果您事先不知道对象的值,则可以循环对象的键和值。我只熟悉 Jade 视图,但您的模板引擎文档应该解释如何执行此操作。
我不知道一种自动使 Express 将解析的表单元素名称转换为对象的方法。
手动操作应该很简单:
function makeFormObj(req, res, next){
var obj = {};
each prop in req.body{
if(req.body.hasOwnProperty(prop){
obj[prop] = req.body[prop];
}
}
req.body.obj = obj;
};
app.post('/form'
, makeFormObj
, function(req, res){
console.log(JSON.stringify(req.body, null, 2);
res.send(200, 'parsed body into object');
});