[英]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.