экспресс-валидатор не получает значений

Я использую экспресс-валидатор в приложении node. Все 4 поля моей формы возвращают ошибки проверки («Требуется имя» и т. д.). Когда я console.log переменную ошибок, все значения пусты:

errors: [{value: '', msg: 'A name is required.', param: 'name', location: 'body'},...

Форма обратной связи:

 <form class="feedback-form" method="POST" action="/feedback">
          <div class="form-group">
            <label for="feedback-form-name">Name</label>
            <input
              type="text"
              class="form-control"
              id="feedback-form-name"
              name="name"
              placeholder="Enter your name"
            />
          </div>
          <div class="form-group">
            <label for="feedback-form-email">E-Mail</label>
            <input
              type="text"
              class="form-control"
              id="feedback-form-email"
              name="email"
              placeholder="Enter your email address"
            />
          </div>
          <div class="form-group">
            <label for="feedback-form-title">Title</label>
            <input
              type="text"
              class="form-control"
              id="feedback-form-title"
              name="title"
              placeholder="Title of your feedback"
            />
          </div>
          <div class="form-group">
            <label for="feedback-form-message">Message</label>
            <textarea
              type="text"
              placeholder="Enter your message, then hit the submit button"
              class="form-control"
              name="message"
              id="feedback-form-message"
              rows="6"
            ></textarea>
          </div>
          <button type="submit" class="btn btn-secondary float-right">Submit</button>
        </form>

И мой роутер:

router.post(
    "/",
    [
      check("name").trim().isLength({ min: 3 }).escape().withMessage("A name is required."),
      check("email").trim().isEmail().normalizeEmail().withMessage("A valid e-mail is required."),
      check("title").trim().isLength({ min: 3 }).withMessage("A valid title is required."),
      check("message").trim().isLength({ min: 3 }).withMessage("A valid message is required."),
    ],
    (request, response) => {
      const errors = validationResult(request);
      console.log(errors);
      if (!errors.isEmpty()) {
        request.session.feedback = {
          errors: errors.array(),
        };

        return response.redirect("/feedback");
      }
      return response.send("Feedback form posted");
    }
  );
  return router;

Почему значения формы не передаются методу post маршрутизатора?


person Sartorialist    schedule 13.04.2020    source источник


Ответы (1)


Вам необходимо получить доступ к полям формы в request.body, за которыми следует их соответствующее имя, как описано в ЭТО сообщение.

person Furqan Aziz    schedule 13.04.2020
comment
Спасибо - и request.body.name, и request.body не определены... - person Sartorialist; 13.04.2020
comment
ваши данные отправляются в формате JSON? Попробуйте использовать Postman для проверки результатов. - person Furqan Aziz; 13.04.2020
comment
Спасибо за вашу помощь - моя проблема заключалась в том, что я не установил пакет body-parser. - person Sartorialist; 13.04.2020