繁体   English   中英

在node.js中调用异步函数

[英]Calling async function in node.js

我有一个异步功能

async function getPostAsync() {
  const post = await Post.findById('id');

  // if promise was successful,
  // but post with specific id doesn't exist
  if (!post) {
    throw new Error('Post was not found');
  }

  return post;
}

我正在用

app.get('/', (req, res) => {
  getPostAsync().then(post => {
    res.json({
      status: 'success',
    });
  }).catch(err => {
    res.status(400).json({
      status: 'error',
      err
    });
  })
});

但我刚收到

{
  "status": "error",
  "err": {}
}

我期望得到错误或者Post was not found错误,或者连接出错或者类似的err ,但是变量err在我的catch语句中只是一个空对象。

考虑以下:

let e = Error('foobar');
console.log( JSON.stringify(e) )

输出{} ,很像您的情况。 那是因为错误不能很好地序列化为JSON。

相反,请尝试以下操作:

res.status(400).json({
  status : 'error',
  err    : err.message // `String(err)` would also work
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM