Не удается опубликовать вложенный объект json в синтаксический анализатор тела экспресс-узла

Привет, я создаю образец REST API, используя Node, Express и Mongo. Я использую промежуточное ПО bodyParser() для анализа данных формы. Он отлично работает для простого объекта, скажем

         var user = {
             name:'test',
             age:'20'
         }

req.body создает тот же набор форматов, чтобы сохранить его в mongodb, например.

         {
             name:'test',
             age:'20'
         }

При использовании сложного объекта

         var user = {
                 name:'test',
                 age:'20',
                 education: {
                     institute:"xxx",
                     year:2010
                 }
            }

req.body создает другой формат, например

           {
                 name:'test',
                 age:'20',
                 education[institute]: "xxx",
                 edcuation[year]:2010
            }

Я хотел бы получить тот же формат, который я публикую в теле, чтобы сохранить их в базе данных. Это правильный подход или любой другой метод, доступный для этого?


person bleedCoder    schedule 03.11.2014    source источник


Ответы (1)


Думаю, с документацией непонятно. Я потратил часы, чтобы найти его. Тем не мение..

Вы должны изменить параметр body-parser на extended: true, как показано ниже.

app.use(bodyParser.urlencoded({ extended: true));

https://github.com/expressjs/body-parser?_ga=1.163627447.940445150.1418712389#bodylendoptparions

person efkan    schedule 07.01.2015
comment
На самом деле, у меня может быть похожее проблема. Сервер написан на node.js + Express, а клиент — это другое приложение node.js. Схема коллекции является иерархической и, следовательно, немного более сложной. Я пробовал и extended:true, и extended:false, и ни один из них не работает. Что мне не хватает? - person Web User; 05.07.2016
comment
Я действительно не знаю, почему. Но я рекомендую вам открыть новый вопрос в стеке или сообщить на сайте github body-parser. - person efkan; 05.07.2016