тело запроса не определено при попытке ОПУБЛИКОВАТЬ в express

#node.js #express #post #routes

#node.js #выразить #Публикация #маршруты

Вопрос:

По какой-то причине тело запроса не определено при попытке выполнить запрос post:

вот мой роутер: router.route("/").post(schoolController.createSchool);

вот что я поместил в schoolController для createSchool:

 exports.createSchool = async (req, res) => {
  try {
    console.log(req.body);
    // return undefined

    const newSchool = await School.create(req.body);

    res.status(201).json({
      status: "success",
      data: {
        school: newSchool,
      },
    });
  } catch (err) {
    res.status(400).json({
      status: "fail",
      message: err,
    });
  }
};
  

кроме того, я следую курсу джонаса по nodejs на udemy, и у него есть почти то же самое, что и это, за исключением того, что он предназначен для обработки запросов на тур вместо школы

Комментарии:

1. возможно, какая-то проблема с конфигурацией используемого вами анализатора. С текущими деталями в вашем вопросе невозможно определить, в чем может быть причина, по которой оно не определено

2. Вы добавили промежуточное программное обеспечение для синтаксического анализа тела? expressjs.com/en/resources/middleware/body-parser.html

3. нет что такое промежуточное программное обеспечение для синтаксического анализа тела?

Ответ №1:

Проблема, с которой вы столкнулись здесь, вероятно, заключается в том, что вы неправильно настроили промежуточное программное обеспечение средства анализа тела. Обычный запрос req не будет содержать никакого свойства по имени body . Только после того, как запрос пройдет через промежуточное программное обеспечение body-parser, body ключ будет добавлен к req . Вы можете попробовать консольное ведение журнала req . Если запрос зарегистрирован правильно, более чем вероятно, что вам нужно изучить правильную настройку промежуточного программного обеспечения bodyparser, прежде чем вы сможете использовать req.body в своем коде.