在快递中,可以命名输入,如
<input name="obj[field1]">
<input name="obj[field2]">
将req.body.obj作为格式化对象。
反过来可能吗? (即:在输入中给出一个对象并获得填充的相应字段)
答案 0 :(得分:2)
不,这是不可能的。
最接近的解决方案是将数据传递到res.locals
或app.locals
的视图。
<强> app.js 强>
app.locals({ foo: 'foo', bar: 'bar' });
<强> index.jade 强>
input(value=locals.foo)
input(value=locals.bar)
如果您事先不知道对象的值,则可以循环对象的键和值。我只熟悉Jade视图,但模板引擎的文档应该解释如何执行此操作。
答案 1 :(得分:0)
我不知道如何自动将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');
});