0

在快递中,可以将输入命名为

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

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

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

4

2 回答 2

2

不,这是不可能的。res.locals最接近的解决方案是使用或将数据传递给视图app.locals

应用程序.js

app.locals({ foo: 'foo', bar: 'bar' });

索引.jade

input(value=locals.foo)
input(value=locals.bar)

如果您事先不知道对象的值,则可以循环对象的键和值。我只熟悉 Jade 视图,但您的模板引擎文档应该解释如何执行此操作。

于 2013-08-09T12:08:57.297 回答
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');
});
于 2013-08-09T13:19:39.343 回答