2017-06-03 46 views
1

如何确保只有在创建拒绝承诺的情况下才会将创建的错误消息发送到客户端?Node 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:不正确的时间值:”

回答

0

您可以介绍您的自定义错误对象,像这样这样做的人: Node.js custom error handling

然后在需要时抛出您的自定义错误的实例。如果错误是您的自定义错误的实例,则仅将消息添加到响应中。

例如

.catch(function (err) { 
    console.log(err) 
    if (err instanceof CustomError) { 
     res.status(400).send(err.message) 
    } 
}); 
相关问题