Данные JSON POST в Node.JS сериализованы как массив

Пытаюсь получить данные POST из моей интерфейсной формы. Когда я запускаю console.info(req.body), я получаю следующее:

[ { name: 'name', value: 'kevin' }
  { name: 'email', value: '' },
  { name: 'phone', value: '' },
  { name: 'message', value: '' } ]

Проблема: мой текущий вывод на console.info(req.body.name): Undefined

Ожидаемый результат: kevin

Может кто-нибудь объяснить, почему это происходит и что я могу сделать, чтобы избежать? Я недостаточно понимаю JSON, и я пытаюсь научиться.

Спасибо

поскольку req.body - это массив, вам нужно перебирать каждый элемент или (плохой вариант) req.body[0].name.

Mukesh Sharma 05.10.2018 18:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
323
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

req.body будет массивом объекта. Вам нужно перебрать его, используя forEach для обычного цикла for, и получить значение.

Если вы хотите получить только элемент из первого объекта, выполните req.body[0].name, где [0] - это индекс.

Ответ принят как подходящий

Может кто-нибудь объяснить, почему это происходит и что я могу сделать, чтобы избежать?

Попробуйте использовать этот способ, используя forEach(), чтобы получить имя / значение, потому что ваш req.body - это array of object, поэтому вам нужно повторить его и взять из него имя или значение, как показано ниже, и избежать вывода undefined. Также, если вам просто нужно какое-то конкретное имя / значение от вашего array of object, попробуйте это без цикла forEach, например req.body[0].name или req.body[0].value. Надеюсь, теперь вы понимаете :)

const array_of_obj = [{
    name: 'name',
    value: 'kevin'
  }, {
    name: 'email',
    value: ''
  },
  {
    name: 'phone',
    value: ''
  },
  {
    name: 'message',
    value: ''
  }
];

array_of_obj.forEach((elm) => {
  console.info(`name = ${elm.name} and value = ${elm.value}`);
})

Посмотрите этот пример, который я создал. Надеюсь, это поможет

    var json1 = {"players":[
          {"name":"Messi", "goals":8},
          {"name":"Ronaldo", "goals":22},
          {"name":"Costa", "goals":20},
          {"name":"Neymar", "goals":13},
          {"name":"Arabi", "goals":6},
          {"name":"Bale", "goals":3},
          {"name":"Toquero", "goals":0}]};
    console.info(json1.players[0]);
    for(let item of json1.players){
     console.info(item);
    }

Другие вопросы по теме