NodeJS本机驱动程序上的示例MongoDB错误是什么样的?

 小D申俊浩 发布于 2023-02-10 12:28

我似乎无法在他们的文档或互联网上找到MongoDB错误对象的任何示例.

示例MongoDB错误对象是什么样的?我想根据错误来"处理"错误和/或为自己的目的重新格式化错误.

2 个回答
  • 从使用mongodb1.3.23驱动程序的MongoDB 2.4.8 开始,它们看起来像这样:

    {
      "name":"MongoError",
      "err":"E11000 duplicate key error index: test.test.$country_1  dup key: { : \"XYZ\" }",
      "code":11000,
      "n":0,
      "connectionId":10706,
      "ok":1
    }
    

    2023-02-10 12:29 回答
  • MongoError对象

    对于更新版本的node-mongodb-driver(> = 2),事情有点不同.

    在nodejs驱动程序源代码2.2中,您可以看到错误对象属性可以是各种各样的(参见第34行).只有名称和消息字段始终可用.

    这是一段有趣的代码mongodb-core/lib/error.js (v2.2),看看最后一个for循环.

    function MongoError(message) {
      this.name = 'MongoError';
      this.message = message;
      Error.captureStackTrace(this, MongoError);
    }
    
    MongoError.create = function(options) {
      var err = null;
      if(options instanceof Error) {
        err = new MongoError(options.message);
        err.stack = options.stack;
      } else if(typeof options == 'string') {
        err = new MongoError(options);
      } else {
        err = new MongoError(options.message || options.errmsg || options.$err || "n/a");
        // Other options
        for(var name in options) {
          err[name] = options[name];
        }
      }
      return err;
    }
    

    所以,错误对象看起来至少会像这样:

    {
       "name": : "MongoError",
       "message": "E11000 duplicate key error collection: main_db.stores index..."
    }
    

    err.code字段

    所以,不能保证其他领域,但是code很常见(并且非常有用).此数字是一个mongodb内部错误代码,驱动程序只在可用时将其添加到MongoError对象.您可以在mongodb源代码文件中找到最新的错误代码列表:error_codes.err.

    关于nodejs驱动程序如何管理mongodb错误代码的一个有趣示例是集合bulkWrite源代码,它使用带有a 的toErrorutilscode来抛出MongoError.

    node-mongodb-driver 3.x

    该MongoError源代码已经重构但误差模型本质上是一样的.

    2023-02-10 12:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有