我主要关注这两个(可疑的)类似的教程来学习后端Web开发。
https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4#disqus_thread
http://scottksmith.com/blog/2014/05/05/beer-locker-building-a-restful-api-with-node-crud/
但是,当我到达您接受帖子请求以编辑数据库的部分时,我遇到了问题。我相信我已正确设置了body-parser
app.use(bodyParser.urlencoded({
extended:true}));
我相信我正确处理了请求。
var itemRouter = router.route('/items');
//Creating an endpoint for POSTS /api/beers
itemRouter.post(function(req, res){
console.log(req.body); //This always returns {}
var newItem = new Item();
newItem.name = req.body.name; //These two lines of code are replaced in the working JSON version
newItem.quantity = req.body.name; //These two lines of code are replaced in the working JSON version
//Saves the new item to the database
newItem.save(function(err){
if(err) {
res.send(err);
}
//sends a response
res.json({
message: 'Item added to the database!',
data: newItem
});
});
});
然而,显然出现了问题。我使用postman使用{Content-Type : "application/x-www-form-urlencoded" }
向我的服务器发送请求,但是它没有正确地将该信息作为console.log发送,我总是返回一个空对象,显示没有来自身体正在达到这一点。
我可以通过用
替换标记的两行来正确处理JSON格式的输入newItem.name= req.body[0].value;
newItem.quantity = req.body[1].value;
但是,我想解决这个问题并从中学习,而不是破解解决方法。我在下面的要点上附上了完整的源代码。提前感谢您的帮助!
https://gist.github.com/anonymous/3a96bb30fd29a5c6852b77acac9963df
这就是我在数据库中获得的内容:
{"id":"5a9e0d9f5ecb6825b8d68544","_v":0}
这是我希望在我的数据库中获得的内容:
{"id":"5a9dff951281120fac21aa18","name":"Pepperoni Pizza","quantity":8,"_v":0}
答案 0 :(得分:1)
您必须将body-parser
设为
// set bodyparser for accepting json value
app.use(bodyParser.json())
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// then rest code here
答案 1 :(得分:0)
邮递员的更新和重新启动修复了该问题。我能够确认我的原始代码和流程在其他设备上运行。