我有点像菜鸟但是我遇到了一个奇怪的错误,我一直试图通过Postman测试我的mongoDB的GET / POST请求,GET工作得很好但POST似乎没有做什么,它只是永远加载永远,并最终超时,但来自modulus.io(我托管我的数据库)的分析说他们按POST后立即收到一个查询。这是相关的代码:
我的帖子控制器:
`module.exports.postsCreateOne = function(req, res) {
if(req.params && req.params.userid) {
User.findById(req.params.userid)
.exec(function(err, user) {
if(!user) {
sendJsonResponse(res, 404, {"message":"user not found"});
return;
}
else if (err) {
sendJsonResponse(res, 404, err);
return;
}
else {
addPost(req, res, user);
}
})}`
var addPost = function(req, res, user) {
user.posts.unshift({
text: req.body.text
});}
路线:
router.post('/posts/:userid', ctrlPosts.postsCreateOne);
Also, for better understanding, I've recorded a short video of it
答案 0 :(得分:2)
如果没有回应,则意味着您忘记发回信息。
在你的代码中,如果它全部成功,它将不会返回任何内容。
在参数检查中,如果它无效,你就不会返回一些内容,看起来你没有错误的情况,如果用户标识无效,它也会失败
也许尝试这样的事情:
const ObjectId = mongoose.Types.ObjectId
exports.postsCreateOne = function(req, res, next) {
if (!ObjectId.isValid(req.params.userid)) {
return res.status(400).json({
error: 'invalid userid'
})
}
User.findById(req.params.userid)
.exec(function(err, user) {
if (err)
return next(err)
if (!user) {
return res.status(404).json({
message: 'user not found'
})
}
user.posts.unshift({
text: req.body.text
})
// save something
res.json({
status: 'ok'
})
}
}
}
你应该考虑Promises,因为它们让你的生活更轻松。
如果您对所有错误使用next(err)
,则应将其记录在错误处理程序中。