2016-11-17 9 views
0

Я вроде как здесь, но я столкнулся с странной ошибкой, я пытался проверить свои запросы GET/POST на мой mongoDB через Postman, GET работает отлично, но POST, похоже, ничего не делает, он просто продолжает загружаться навсегда и время от времени, но аналитика от modulus.io (где я разместил свой db) говорит, что они получили запрос сразу после того, как я нажимаю POST. Вот соответствующий код:NodeJS/MongoDB 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

+1

Не похоже, что вы возвращаете ответ от 'addPost', как и в случае, когда пользователь не существует с' sendJsonResponse'. Ваш сервер делает запрос MongoDB, а затем ничего не делает, поэтому, вероятно, ваш запрос висит. – cejast

+0

Вот и все, я забыл, спасибо –

ответ

2

Если нет ответа это означает, что вы забыли отправить что-то назад.

В вашем коде, если он все успешно, он ничего не вернет.

Futher в парах проверить вы не вернуть то, что если это не действует, похоже, у вас нет случая ошибки и, если идентификатор является недействительным он также не

Может попробовать Somthing так:

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) для всех своих ошибок, вы должны зарегистрировать их в своем обработчике ошибок.