现在,如果出现错误(例如重复输入),我将像这样res.status(500).send(err);
向客户展示这种事情:
{
"code": "ER_DUP_ENTRY",
"errno": 1062,
"sqlMessage": "Duplicate entry 'name@mail.com' for key 'user_table_email_unique'",
"sqlState": "23000",
"index": 0,
"sql": "update `user_table` set `email` = 'name@mail.com' where `id` = 3"
}
执行此操作的标准方法是什么?我希望客户知道什么类型的错误,但不知道例如我的表的名称
答案 0 :(得分:0)
在没有看到代码结构的情况下很难提供帮助,但是如果您将查询包含在返回主脚本的函数中,则可以在其中捕获,处理错误,然后将简洁且非数据暴露的错误返回给主脚本。调用函数。
// This is pseudocode
const updateEmail = (db, email, id) => db.query('query...')
.then(data => /* process things */)
.catch(err => {
if (err.errno === 1062) {
throw new Error('Email already exists');
}
});
我不确定在这种情况下500是否是正确的代码,因为它本身并不是服务器错误。尽管这取决于您其他请求的结构,这将是一个优先选择。