简体   繁体   English

在req.body.id(body-parser和express 4)Nodejs中获取未定义

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

app.js: 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: 路线/ 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: 意见/ 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?: 1)是否有必要在每个路线中添加?:

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

2) Why do I get this: 2)为什么我得到这个:

在此输入图像描述

1.You don't need to use body-parser in every route. 1.你不需要在每条路线都使用身体解析器。 Body-parser is a middleware which is used to obtain data from application/x-www-urlencoded content type. Body-parser是一个中间件,用于从application / x-www-urlencoded内容类型中获取数据。 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. 因此,如果您确定您体内获得的数据不是x-www-urlencoded类型,则无需使用它。

2.Please check if you are passing the data in post request. 2.请检查您是否在邮寄请求中传递数据。 You can use chrome extension postman to form any kind of query. 您可以使用chrome extension postman来形成任何类型的查询。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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