在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中?有没有图书馆能让我这样做?
解决方法
如果您使用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]" />
快递4的更新
这里的关键是设置扩展:true
app.use(bodyParser.urlencoded({ extended: true }));