Node.js экспресс-маршрутизация POST-запроса пустое тело, используя body-parser - PullRequest
0 голосов
/ 07 мая 2018

У меня проблема с тем, что мои почтовые запросы из формы отправки создают пустое тело, независимо от того, какие настройки парсера тела я использую. Мои зависимости package.json полностью обновлены, и предыдущее приложение, которое я создал (с устаревшим app.use (bodyParser);), делает это без проблем. Я пролил SO и различные сайты и пробовал каждый взлом, но, похоже, ничего не работает.

Вот соответствующие части моего app.js:

var express = require('express');
var app = express();
var http = require('http').Server(app);
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

var routes = require('./routes/routes.js');

app.post('/checklogin',routes.post_checklogin); 

Вот функция маршрута, которая вызывается по запросу:

var checkLogin = function(req,res) {
    console.log(req.body)
}

Вот форма, из которой я пытаюсь получить свою форму в шаблоне pug:

form(action="/checklogin" method="post" enctype="application/x-www-form-urlencoded")
    input(id="login-email" class="form-control" type="text" placeholder="email")
    input(id="login-password" class="form-control" type="text" placeholder="password")
    button(id="login-submit" class='btn btn-primary') Login

Независимо от того, какая комбинация настроек enctype или body parser позволяет мне иметь что-либо кроме '{}' в качестве req.body. Если бы кто-нибудь мог указать на то, что я считаю действительно глупой ошибкой, я был бы бесконечно благодарен.

Кроме того, я понимаю, что это, вероятно, не лучший способ обработки входов в систему, но это просто для того, чтобы POST-запросы работали в целом по всему приложению.

1 Ответ

0 голосов
/ 07 мая 2018

Это не проблема body-parser, вам не хватает атрибута name в ваших input элементах.

Взято из спецификации W3C :

Успешный элемент управления «действителен» для отправки. Каждый успешный элемент управления имеет его имя элемента в паре с его текущим значением как часть представленный набор данных формы. Успешный контроль должен быть определен внутри элемента FORM и должен иметь имя элемента управления.

input(id="login-email" name="email" class="form-control" type="text" placeholder="email")
input(id="login-password" name="password" class="form-control" type="text" placeholder="password")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...