11

Railsでは、アンダースコア付きのフォームがある場合、paramsにネストされたレイアウト構造が想定されます。

<input type="text" name="person_first" />
<input type="text" name="person_last" />

サーバーでは、次の情報が得られます。

params #=> { person: { first: "Tom", last: "Hanks" } }

node.jsでExpress.jsを使用している場合、bodyparserは同じことをしないようです。bodyparserのコードを見ると、JSONパーサーを実行するだけで、次のようになります。

params #=> { person_first: "Tom", person_last: "Hanks" } }

Expressを使用しているときに、Railsのように、ネストされたフォームデータを取得する方法はありますか?これを可能にするライブラリはありますか?

4

1 に答える 1

21

を使用しているexpress.bodyParser場合は、配列表記を使用してネストされたデータを渡すことができます。

express.bodyParserコントローラの前にミドルウェアを追加します。

app.use(express.bodyParser());

これで、HTMLコードでこの表記を使用できます。

<input type="text" name="person[first]" />
<input type="text" name="person[last]" />

また

<input type="text" name="person[name][first]" />
<input type="text" name="person[name][last]" />

Express4のアップデート

ここで重要なのは設定ですextended: true

app.use(bodyParser.urlencoded({
  extended: true
}));
于 2012-11-16T22:52:54.120 に答える