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

Javascript Mongodb错误代码和相应的http状态代码,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,因此,如果一个新用户试图使用一个已经存在的用户帐户注册,MongoDb将以 在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; } r

因此,如果一个新用户试图使用一个已经存在的用户帐户注册,MongoDb将以

在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

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

您有几个选择:

  • 像现在这样使用条件句。也许可以创建一个自定义错误构造函数,并将条件放在其中,以避免在每次函数调用中重复自己

  • 向前端发送状态代码为500的一般错误消息。在后端记录整个错误对象,以便您知道哪里出了问题。你是真正关心错误的原因、原因、方式和时间的人

  • 就我个人而言,我会选择方案2