javascript - 为什么 req.body 对我来说总是未定义

标签 javascript mysql node.js express

我无法访问任何请求参数。例如req.body.用户名。由于某种原因 req.body 总是未定义。端点是 /youtube

app.js

    var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');

    var index = require('./routes/index');
    var users = require('./routes/users');

    var app = express();

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

    // uncomment after placing your favicon in /public
    //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    app.use('/', index);
    app.use('/users', users);

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      var err = new Error('Not Found');
      err.status = 404;
      next(err);
    });

    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};

      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });

    module.exports = app;

server.js

var express   =    require("express");
var mysql     =    require('mysql');
var app       =    express();

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    host     : 'localhost',
    user     : 'user',
    password : 'pass',
    database : 'db',
    debug    :  false
});


var router = express.Router();// get an instance of the express Router

// middleware to use for all requests
router.use(function(req, res, next) {
    // do logging
    console.log('Incoming request');
    next(); // make sure we go to the next routes and don't stop here
});


app.get("/",function(req,res){-
    handle_database(req,res);
});

router.route('/youtube')

    .post(function(req, res) {

        console.log(req.body); // always undefined

    })
    .get(function(req, res) {

    });

app.use('/api', router);

app.listen(3000);
console.log("Listening on port 3000....")

最佳答案

在 server.js 中的 var app = express(); 下面添加这 3 行:

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

现在您的 req.body 将不再未定义

关于javascript - 为什么 req.body 对我来说总是未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42975064/

相关文章:

javascript - 如何在 node.js shell 中实现制表符补全?

javascript - 传输两个带 Angular 数组

php - 如果伪不存在则插入

node.js - SocketIO 连接被拒绝

c# - 在 python 中使用 key 应用 HMAC SHA-512 算法

javascript - 如何旋转轮播元素并隐藏最远的元素

mysql - 当我在字段列表中选择非索引字段时,为什么 MySQL 停止使用索引进行连接

mysql - Magnolia CMS seamingly 忽略 mysql 数据库但不使用 derby

node.js - 在 AWS QLDB 中提交事务时如何获取/计算 CommitDigest?

javascript - 获取javascript中正则表达式中最后一个2/之间的字符串