[英]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
将永远不会发生。
此外,如果错误消息应该显示在前端,用户并不真正关心错误的内容、原因和方式。 他/她知道的是它不起作用并且他/她不开心。
你有几个选择:
使用像你现在正在做的那样的条件。 也许创建一个自定义错误构造函数并将条件放入其中以避免在每个 function 调用中重复自己。
向前端发送一条状态码为 500 的通用错误消息。在后端记录整个错误 object,以便您知道出了什么问题。 你是真正关心错误的原因、内容、方式、时间的人。
就个人而言,我将 go 与选项 2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.