javascript - 如何在 Express 路由器中使用 body-parser?

标签 javascript node.js express

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

路由.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);
});

应用程序.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...');
});

最佳答案

您在 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}));

关于javascript - 如何在 Express 路由器中使用 body-parser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39985486/

相关文章:

javascript - 如何使用集群增加 NodeJS 服务器的吞吐量?

node.js - 使用nodejs和express将数据保存到mongodb数据库问题

node.js - 如何解码收到的 URL

javascript - jQuery 获取特定类名

javascript - msDropDown 删除所有选项

javascript - 在 mouseover/mouseout 事件中使用 $this 关键字声明变量

javascript - 如何使用 Puppeteer 打印 HTML 文档?

javascript - 代码不提供公共(public)文件夹中的静态 html 文件

node.js - Express 不会在虚拟主机中提供静态 ejs 文件

javascript - ES6 解构,动态赋值