我正在使用node和postgres创建Restful API。我目前正在创建一个POST函数,并且遇到了一些问题。现在,我正在尝试测试我的功能,但我遇到了一个似乎未定义的请求体。
57 function createAction(req, res) {
58 pool.connect(function(err,client,done) {
59 if(err){
60 console.log("Not able to get connection "+ err + "\n");
61 res.status(400).send(err);
62 }
63
64 req.body.otherKey = parseInt(req.body.otherKey); // ERROR HERE
65 client.query('INSERT INTO acts(dateDone, completed, otherKey)'
66 + 'values(${dateDone}, ${completed}, ${otherKey})',
67 req.body, function(err,res) {
68
69 done();
70 if(err){
71 console.log(err);
72 res.status(400).send(err);
73 }
74
75 res.status(200);
76 console.log("Successfully created new action");
77 });
78 });
79 }
我正在使用以下代码对其进行测试:
curl -d "dateDone=testPOST&completed=f&otherKey=100" http://127.0.0.1:3000/api/actions
错误消息如下:
TypeError: Cannot read property 'otherKey' of undefined
答案 0 :(得分:0)
req.body未定义,因为" body"没有被解析。
使用中间件body-parser
https://www.npmjs.com/package/body-parser
或者您可以手动定义包装器。
function postWrapper(req, res, cb) {
req.on('data', function(data) {
if (!req.body) {
req.body = '';
}
req.body += data.toString();
});
req.on('end', function() {
cb(req, res);
});
}
然后:
function createAction(req, res) {
postWrapper(req, res, function(req, res){
// your code
}
}