如何确保在承诺拒绝的情况下,我创建的错误消息只会发送到客户端?
我抛出一个自定义错误,工作正常。
return db.query(`SELECT * FROM events WHERE hostId = ? AND status = ?;`,[userId, ACTIVE_EVENT])
.then((results)=>{
if(results.length != 0)
throw new Error('You already have an active event')
})
后来被抓了
.catch(function (err) {
console.log(err)
res.status(400).send(err.message)
});
一个很好的错误消息传递给客户端。
但有时我会从格式错误的数据库查询中得到一个令人讨厌的错误,或者其他什么,并且客户端会看到类似" ER_TRUNCATED_WRONG_VALUE:不正确的时间值的消息:"
答案 0 :(得分:0)
你可以介绍你的自定义错误对象,就像这个人做的那样: Node.js custom error handling
然后在需要时抛出自定义错误的实例。如果错误是自定义错误的实例,则仅将消息添加到响应中。
e.g。
.catch(function (err) {
console.log(err)
if (err instanceof CustomError) {
res.status(400).send(err.message)
}
});