如何在快速路由器中使用body-parser?

时间:2016-10-11 19:45:33

标签: javascript node.js express

我有一个有对象的后api但我无法在控制台中打印它的throowing undefined我以为我缺少身体解析器但是在添加身体解析器后我看到错误body-parser deprecated bodyParser: use individual json/urlencoded middlewares任何帮助将不胜感激。

routes.js

var express = require('express');
var bodyParser = require('body-parser');
var Diagram = require('./api/diagram/diagram.controller');
var router = express.Router();
router.post('/saveUpdateDiagram',bodyParser,function(req,res){
    console.log(req.body);
});

app.js

var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
var route = require('./server/routes').router;
var mongoose = require('mongoose');
mongoose.connection.on('connected', function() {
    console.log('MongoDB connected ');
});


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


app.listen(8760, function() {
    console.log('I am listening 8760...');
});

4 个答案:

答案 0 :(得分:3)

你在app.js中使用body-parser很好。它是中间件,它加载了app.use,因此它将应用于每个传入的请求。

您可以在routes.js中将其删除,以便它看起来像这样:`

var express = require('express');
var Diagram = require('./api/diagram/diagram.controller');
var router = express.Router();
router.post('/saveUpdateDiagram', function(req,res){
    console.log(req.body);
});

` 另外,请尝试替换:

app.use(bodyParser.urlencoded({
    extended: false
}))

使用:

app.use(bodyParser.urlencoded({extended: true}));

答案 1 :(得分:1)

这意味着截至2014-06-19,已弃用bodyParser()构造函数。

 app.use(bodyParser()); //Now deprecated You now need to call the methods separately
 app.use(bodyParser.urlencoded());

 app.use(bodyParser.json()); //And so on.

如果您仍然使用urlencoded收到警告,则需要使用

 app.use(bodyParser.urlencoded({
     extended: true
 }))

现在需要显式传递扩展配置对象键,因为它现在没有默认值,如上所述over here.

答案 2 :(得分:0)

你在app.js中使用body-parser很好。它是中间件,它加载app.use但问题是你使用app.use('/',route)的位置;它应该放在 app.use(bodyParser.urlencoded({     延伸:真实 }));

答案 3 :(得分:0)

简单方法, 使用以下命令安装body-parser

npm install -g body-parser

然后使用

在您的应用程序中要求它
var bodyParser = require("body-parser"); 

然后您可以在应用中使用它,添加以下代码行

app.use(bodyParser.urlencoded({extended: true}));