Express js post方法错误地读取编码的数据

我有我的angularjs代码,试图发送一个post请求如下

var req = { method: 'POST', url: 'http://localhost:3300/addInventoryItem', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: { item_name : item.itemName } }; $http(req).then(function(response){...}); 

我有我的nodejsexpression代码有这个

 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.post("/addInventoryItem", function(req, res) { console.log(req.body); }); 

我总是在我的节点中获取请求

 { '{"item_name":"sweetB"}': '' } 

为什么req.body将整个表单数据作为关键字? 我该如何解决这个问题?

编辑我正在使用身体分析器模块快递

谢谢你的帮助

尝试以编码格式发送数据,请求标头为json。

 var data = $.param({ json: JSON.stringify({ item_name : item.itemName }) }); 

正如@mzulch在评论中提到的那样,您正在寻找一个正文parsing器 ,以便Express将为您parsing请求正文。

 var app = express(); //... var bodyParser = require('body-parser'); // parse urlencoded request body app.use(bodyParser.urlencoded({ extended: true, limit: '50mb'})); 

然后,在控制器中,您将拥有一个对象:

 app.post("/addInventoryItem", function(req, res) { // req.body is an object: {"item_name":"sweetB","item_price":10} console.log(req.body); });