如何在express.js中获取嵌套表单数据?

时间:2012-11-16 17:41:27

标签: forms node.js express

在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中?是否有可以让我这样做的图书馆?

1 个答案:

答案 0 :(得分: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]" />

Express 4的更新

此处的关键是设置extended: true

app.use(bodyParser.urlencoded({
  extended: true
}));