抛出错误但在Mongoose中错误响应对象为空

时间:2017-07-27 21:36:11

标签: javascript node.js mongodb mongoose response

我正在尝试向我的API发送请求。

我的代码就像这样

app.post('/api/create', (req, res, next) => {
  if (!req.headers || !req.headers.authorization) {
    return res.status(500).json({
      status: 'error',
      err: 'No authorization header'
    });
  }

  const bits = req.headers.authorization.split(' ');
  const scheme = bits[0];
  const token = bits[1];

  jwt.verify(token, 'secret', function(err, decoded) {
    if (!!err) {
      return res.status(400).json({
        status: 'error',
        err: 'Invalid credentials.'
      });
    }

    //
    const userId = decoded.id;

    //
    if (!userId) {
      return res.status(400).json({
        status: 'error',
        err: 'User id missing',
      });
    }

    //
    const { postId } = req.params;

    //
    User.findById(userId).then(user => {
      //
      if (!user) {
        return res.status(400).json({
          status: 'error',
          err: 'User not found',
        });
      }

      //
      Post.findById(postId).then(event => {
        //
        if (!post) {
          return res.status(400).json({
            status: 'error',
            err: 'Post not found',
          });
        }

        // ...

      }).catch(err => {
        // Could not find post
        return res.status(400).json({
          status: 'error',
          msg: 'Could not find post',
          err
        });
      });
    }).catch(err => {
      // Could not find user
      return res.status(400).json({
        status: 'error',
        msg: 'Could not find user',
        err
      });
    });
  });
});

但是我收到了对象

的错误
{
  status: 'error',
  msg: 'Could not find post',
  err: ''
}

即。 err完全是空的。我不知道如何调试这个。我正在使用}).catch(err => {捕获错误,因此如果我到达catch()块,我希望它会写出错误。

什么可能导致这个问题?

0 个答案:

没有答案