Пытаюсь получить данные 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, и я пытаюсь научиться.
Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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);
}
поскольку
req.body- это массив, вам нужно перебирать каждый элемент или (плохой вариант)req.body[0].name.