Время ожидания запроса POST для NodeJS/MongoDB
Я вроде как нуб, но я столкнулся со странной ошибкой, я пытался проверить мои запросы GET/POST к моей mongoDB через Postman, 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);
Кроме того, для лучшего понимания я записал короткое видео об этом
1 ответ
Если ответа нет, значит, вы забыли что-то отправить назад.
В вашем коде, если все будет успешно, ничего не вернется.
Далее при проверке параметров вы не вернете что-то, если оно недопустимо, похоже, что у вас нет ошибки, а если идентификатор пользователя недействителен, то также произойдет сбой.
Может быть попробовать что-то вроде этого:
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'
})
}
}
}
И вы должны рассмотреть Обещания, потому что они делают вашу жизнь проще. И если вы используете next(err)
для всех ваших ошибок вы должны записать их в свой обработчик ошибок.