如何在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 }));