Данные JSON POST в Node.JS сериализуются как массив - PullRequest
0 голосов
/ 05 октября 2018

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

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

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

Ожидаемый вывод: kevin

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

Спасибо

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

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

Попробуйте таким образом использовать forEach(), чтобы получить имя / значение, потому что вы req.bodyarray 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.log(`name = ${elm.name} and value = ${elm.value}`);
})
0 голосов
/ 05 октября 2018

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

    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.log(json1.players[0]);
    for(let item of json1.players){
     console.log(item);
    }
0 голосов
/ 05 октября 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...