NodeJS/MongoDB POST 请求超时
NodeJS/MongoDB POST request times out
我在这里有点菜鸟,但我遇到了一个奇怪的错误,我一直在尝试通过 Postman 测试我对 mongoDB 的 GET/POST 请求,GET 工作完美但是 POST 似乎什么也没做,它只是一直加载并最终超时,但是来自 modulus.io (我托管我的数据库的地方)的分析说他们在我按下 [ 后立即收到查询=30=]。这是相关代码:
我的 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
如果没有回复,说明您忘记发回邮件了。
在您的代码中,如果全部成功,它不会 return 任何东西。
进一步在参数检查中你没有return一些无效的东西,看起来你没有错误案例,如果用户 ID 无效它也会失败
也许尝试这样的事情:
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)
,您应该将它们记录在错误处理程序中。
我在这里有点菜鸟,但我遇到了一个奇怪的错误,我一直在尝试通过 Postman 测试我对 mongoDB 的 GET/POST 请求,GET 工作完美但是 POST 似乎什么也没做,它只是一直加载并最终超时,但是来自 modulus.io (我托管我的数据库的地方)的分析说他们在我按下 [ 后立即收到查询=30=]。这是相关代码:
我的 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
如果没有回复,说明您忘记发回邮件了。
在您的代码中,如果全部成功,它不会 return 任何东西。
进一步在参数检查中你没有return一些无效的东西,看起来你没有错误案例,如果用户 ID 无效它也会失败
也许尝试这样的事情:
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)
,您应该将它们记录在错误处理程序中。