尝试获取request.body Nodejs中的所有字段时,获取异常“在尝试访问对象时调用非对象的Object.keys”

时间:2014-11-13 14:19:56

标签: javascript node.js express

我有像这样的PUT方法的代码

module.exports.addRoutes = function(server) {
     //PUT
    server.put('/api/public/place/:id', function(request, response) {
         //this is just for testing, please do not care about the id
         var placedetail = request.body;
         for(var key in placedetail)
         {
              console.log(placedetail[key]);
         }
    });
};

在这段代码中,我想获取所有请求体字段,如request.body.name,request.body.email等。字段参数将由用户决定,服务器将按键获取值

例如,用户将数据放入请求中,如

{
name:"Test"
email:"abc@gmail.com"
}

另一个用户输入数据

    {
    address:"Test"
    location:"Some Test String"
    }

我使用这种方式并在尝试访问对象"时得到异常" Object.keys在非对象上调用。但是当访问每个字段时,例如:request.body.name,request.body.email,它仍然成功获取参数。

我也是另一种通过JSON.parse(request.body.toString())解析数据的方式,但实际上,数据不是JSON而且无法解析。

如何获取request.body的所有字段?

感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用body-parser模块来解析req.body数据:

var bodyParser = require('body-parser');

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