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



因此,如果一个新用户试图注册一个已经存在的用户帐户,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);
}     
}

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

然而,我不确定处理MongoDB中的几个不同代码并为每个代码分配http状态是否是一个好方法。

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

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

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

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

此外,如果错误消息应该显示在前端,那么用户实际上并不关心错误的内容、原因和方式。他/她所知道的是,这不起作用,他/她不高兴。

您有几个选项:

  1. 使用像您现在所做的那样的条件语句。也许可以创建一个自定义的错误构造函数,并在其中放入条件语句,以避免在每个函数调用中重复自己的操作。

  2. 向前端发送带有状态代码500的通用错误消息。在后台记录整个错误对象,这样你就可以知道出了什么问题。你是一个真正关心错误的原因、内容、方式和时间的人。

就我个人而言,我会选择选项2。

相关内容

最新更新