0

エクスプレスでは、次のような入力に名前を付けることができます

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

req.body.obj をフォーマットされたオブジェクトとして取得します。

逆は可能ですか?(つまり、入力でオブジェクトを指定し、対応するフィールドにデータを入力します)

4

2 に答える 2

2

いいえ、できません。最も近い解決策は、res.localsまたはを使用してビューにデータを渡すことapp.localsです。

app.js

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

index.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 に答える