在Express.js中自动填充表单

时间:2013-08-09 11:48:22

标签: node.js express

在快递中,可以命名输入,如

<input name="obj[field1]">
<input name="obj[field2]">

将req.body.obj作为格式化对象。

反过来可能吗? (即:在输入中给出一个对象并获得填充的相应字段)

2 个答案:

答案 0 :(得分:2)

不,这是不可能的。 最接近的解决方案是将数据传递到res.localsapp.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');
});