【问题标题】:NodeJS/MongoDB POST request times outNodeJS/MongoDB POST 请求超时
【发布时间】:2017-04-01 17:12:10
【问题描述】:

我在这里有点菜鸟,但我遇到了一个奇怪的错误,我一直在尝试通过 Postman 测试我对 mongoDB 的 GET/POST 请求,GET 可以完美运行,但 POST 似乎没有无论如何,它只会永远加载并最终超时,但是来自模数.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

【问题讨论】:

  • 它看起来不像您正在返回来自 addPost 的响应,就像您在用户不存在 sendJsonResponse 的情况下一样。您的服务器正在对 MongoDB 进行查询,然后什么也不做,这可能就是您的请求挂起的原因。
  • 就是这样,我忘了,谢谢

标签: node.js mongodb postman modulus.io


【解决方案1】:

如果没有回复,说明你忘记发回东西了。

在您的代码中,如果全部成功,它将不会返回任何内容。

进一步检查参数,如果它无效,您不会返回某些内容,看起来您没有错误情况,如果用户 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'
        })
      }
    }
}

你应该考虑 Promise,因为它们让你的生活更轻松。 如果您对所有错误使用next(err),则应将它们记录在错误处理程序中。

【讨论】:

    猜你喜欢
    • 2019-12-26
    • 2011-11-30
    • 1970-01-01
    • 2017-03-31
    • 2016-11-02
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多