我有一个异步功能
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
只是我catch
语句中的空对象。
答案 0 :(得分:0)
请考虑以下事项:
let e = Error('foobar');
console.log( JSON.stringify(e) )
这会输出{}
,就像你的情况一样。这是因为错误不能很好地序列化为JSON。
相反,试试这个:
res.status(400).json({
status : 'error',
err : err.message // `String(err)` would also work
});