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

在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的代码,它只运行JSONparsing器,导致:

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

有什么方法可以得到嵌套的表单数据,就像在Rails中,当我使用Express时? 有一个图书馆,使我能做到这一点?

如果您使用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 }));