Node Express:如何仅将自定义错误消息发送回客户端

时间:2017-06-03 08:42:26

标签: node.js express

如何确保在承诺拒绝的情况下,我创建的错误消息只会发送到客户端?

我抛出一个自定义错误,工作正常。

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:不正确的时间值的消息:"

1 个答案:

答案 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)
    }
});