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]" />

Express 4 更新

这里的关键是设置extended: true

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