express express-parser中间件将数据放入属性名称中

我是nodeJS Express框架的新手。 我正在使用以下消息发送POST请求:

router.post('/', function(req, res) { var data = Object.getOwnPropertyNames(req.body)[0]; }); 

我通过以下方式从客户端发送了这些数据:

 $.ajax({ url: "write_to_region", type: "POST", data: JSON.stringify(grid) }); 

其中“网格”是一个二维值的数组。 我的快车尸体parsing器configuration如下:

 app.use(bodyParser.urlencoded({limit: '50mb', extended: false })); 

什么是更好或更习惯的做法呢? 请注意,该数组有点大(10kb),只包含整数。 理想情况下,我会尽量减less请求中发送的数据量。 谢谢!!

问题是你没有设置适当的Content-Type 。 Jquery的POST数据默认的Content-Typeapplication/x-www-form-urlencoded 。 所以,身体分析器开始读取请求数据,寻找一个=知道什么时候“键”结束和“价值”开始。 它从来没有find一个=所以它不断附加到密钥名称。

要解决这个问题,你需要在你的$ajax()configuration文件中添加这些选项:

 contentType: "application/json; charset=utf-8", dataType: "json", 

并添加bodyParser.json()中间件:

 app.use(bodyParser.json());