简体   繁体   中英

Get undefined in req.body.id (body-parser and express 4) Nodejs

app.js:

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var person = require('./routes/person');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/person', person);

module.exports = app;

routes/person.js:

var express = require('express');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var router = express.Router();

/* GET  page. */
router.get('/', function (req, res) {
    res.render('person', {
        message: 'Person works'
    });
});

router.post('/', urlencodedParser, function (req, res) {
    res.send('Thank you!');
    console.log(req.body.firstname);
    console.log(req.body.lastname);
});

views/person.pug:

    extends layout

block content
    h1 Welcome #{id}
    p= message
    br
    h2= qstr
    br
    form(method='post', action='/person')
        label First name      
        input#firstname(type='text')    
        br   
        label Last name 
        input#lastname(type='text')
        input(type='submit', value='Submit')

Questions:

1) Is it necessary in every route to add?:

var bodyParser = require('body-parser'); 
var urlencodedParser = bodyParser.urlencoded({ extended: false });

2) Why do I get this:

在此输入图像描述

1.You don't need to use body-parser in every route. Body-parser is a middleware which is used to obtain data from application/x-www-urlencoded content type. So if you're sure sure that data you will get in your body is not x-www-urlencoded type, you don't need to use it.

2.Please check if you are passing the data in post request. You can use chrome extension postman to form any kind of query.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM