Как req.body правильно сопоставлен с константным массивом переменных здесь? - PullRequest
0 голосов
/ 10 ноября 2019

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

Необработанный JSON в телесообщение:

{
  "status":"Systems Engineer",
  "skills":"HTML ,CSS, Python, Machine Learning"
}

В server.js я инициализировал Middleware как:

app.use(express.json({ extended: false }));

В бэкэнде в файле profile.js:

const {
      company,
      website,
      location,
      bio,
      status,
      githubusername,
      skills,
      youtube,
      twitter,
      facebook,
      linkedin,
      instagram
    } = req.body;

console.log(status);
console.log(skills);

Вывод:

«Системный инженер»

«HTML, CSS, Python, Машинное обучение»

1 Ответ

0 голосов
/ 10 ноября 2019

Эта строка промежуточного программного обеспечения Express:

app.use(express.json({ extended: false }));

читает тело запроса из входящего потока запросов http, а затем анализирует JSON, найденный в этом теле запроса. Полученные свойства из проанализированного JSON помещаются в объект req.body, чтобы последующий обработчик запросов мог использовать данные оттуда. Это промежуточное ПО заполняет любые свойства, которые оно находит в проанализированном JSON.

Эта часть вашего кода:

const {
      company,
      status,
      skills,
      ...
      instagram
    } = req.body;

называется деструктуризацией объектов в Javascript (ничего общего с Express). Это в основном эквивалентно следующему коду:

const company = req.body.company;
const status = req.body.status;
const skills = req.body.skills;
...
const instagram = req.body.instagram;

Любое свойство с именованной переменной, которого нет в req.body, просто заканчивается соответствующей переменной со значением undefined. Те, которые существуют, скопируют значение этого свойства в именованную переменную.

Кроме того, в вашем коде нет массива. Первый блок кода выше - это синтаксис деструктурирования объектов в Javascript.

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