我有一个有对象的后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...');
});
答案 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}));