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),您应该将它们记录在错误处理程序中。