我的节点/表达式RESTful API应该如何将数据库错误返回给客户端?

时间:2018-11-09 19:30:25

标签: node.js express

现在,如果出现错误(例如重复输入),我将像这样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"
}

执行此操作的标准方法是什么?我希望客户知道什么类型的错误,但不知道例如我的表的名称

1 个答案:

答案 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是否是正确的代码,因为它本身并不是服务器错误。尽管这取决于您其他请求的结构,这将是一个优先选择。