Как получить данные вложенной формы в express.js?
В Rails, если у вас есть форма с символами подчеркивания, она примет вложенную структуру макета в параметрах:
<input type="text" name="person_first" />
<input type="text" name="person_last" />
На сервере вы получите:
params #=> { person: { first: "Tom", last: "Hanks" } }
Когда я использую Express.js в node.js, bodyparser, похоже, не делает то же самое. Рассматривая код для bodyparser, он просто запускает парсер JSON на нем, в результате чего:
params #=> { person_first: "Tom", person_last: "Hanks" } }
Есть ли способ получить данные вложенной формы, например, в Rails, когда я использую Express? Есть ли библиотека, которая позволяет мне это делать?
Ответы
Ответ 1
Если вы используете 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
}));