繁体   English   中英

Mongodb 错误代码和对应的 http 状态代码

[英]Mongodb Error codes and corresponding http status code

因此,如果新用户尝试使用已存在的用户帐户进行注册,MongoDb 会返回11000 错误代码

在 Express 中,可以这样处理:

async function signup(req, res, next){
  try{ 
  // some stuff
  }catch(err){
    if (err.code === 11000) {
      err.message = 'Email is already taken.';
      res.statusCode = 409;
    }
    return next(err);
  }     
}

对于此示例,我决定使用 409 http 状态码进行响应。

但是,我不确定这是否是处理来自 MongoDB 的几个不同代码并为每个代码分配 http 状态的好方法。

我还缺少哪些其他解决方案?

您可以针对可能遇到的常见错误返回特定响应。

但这真的取决于你想变得多么具体。 您还需要考虑为可能发生的每个错误自定义响应是否真的值得。 根据您的配置,其中一些可能永远不会发生。

例如,如果您不使用分片集群, ncompatibleShardingConfigVersion将永远不会发生。

此外,如果错误消息应该显示在前端,用户并不真正关心错误的内容、原因和方式。 他/她知道的是它不起作用并且他/她不开心。

你有几个选择:

  1. 使用像你现在正在做的那样的条件。 也许创建一个自定义错误构造函数并将条件放入其中以避免在每个 function 调用中重复自己。

  2. 向前端发送一条状态码为 500 的通用错误消息。在后端记录整个错误 object,以便您知道出了什么问题。 你是真正关心错误的原因、内容、方式、时间的人。

就个人而言,我将 go 与选项 2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM