node.js - NodeJS native 驱动程序上的示例 MongoDB 错误是什么样的?

标签 node.js mongodb node-mongodb-native

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

示例 MongoDB 错误对象是什么样的?我想“处理”错误和/或出于我自己的目的重新格式化它,这取决于错误是什么。

最佳答案

MongoError 对象

使用较新版本的 node-mongodb-driver (>= 2) 事情有点不同。

nodejs driver source code 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.yml .

关于 nodejs 驱动程序如何管理 mongodb 错误代码的一个有趣示例是 the collection bulkWrite source code ,使用 toError utils使用 code 抛出 MongoError。

node-mongodb-driver 3.x

MongoError source code has been refactored但误差模型本质上是一样的。

关于node.js - NodeJS native 驱动程序上的示例 MongoDB 错误是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597773/

相关文章:

node.js - Nodejs mongodb 驱动程序和 GridFS

javascript - Vert.x 相当于 Node.js 全局对象

javascript - DynamoDB DeleteItem 显然不起作用 - 没有给出错误

具有文档字段比较的 MongoDB partialFilterExpression

python - python 中的 def 函数在 tpl 文件中?

node.js - 如何为 node-mongodb-native 设置日志记录?

node.js - 如何在 Node.js 中静默 XML DOM 的所有警告消息

node.js - Node js Express中 'app.resource'有什么用

python - 更新 mongoengine 中的嵌入式文档

node.js - 如何检查MongoDB native nodejs驱动程序中是否存在集合?