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

4

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

我正在抛出自定义错误,这很有效。

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: Incorrect time value:"。

1个回答

2
你可以像这个人一样介绍自定义错误对象: Node.js自定义错误处理 然后在需要时抛出自定义错误的实例。仅在错误是你自定义错误的实例时才将消息添加到响应中。
例如:
.catch(function (err) {
    console.log(err)
    if (err instanceof CustomError) {
        res.status(400).send(err.message)
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接