You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB Node.js报错:assert.equal(3, result.result.n)运行提示n未定义

错误原因
  • 你使用的是MongoDB Node.js驱动4.0及以上版本,而复制的示例代码是适配3.x旧版本的,新旧版本insertMany接口的返回值结构差异导致报错:4.0+版本返回的结果对象已经移除了result属性,因此访问result.result.n时会触发Cannot read property 'n' of undefined的错误。
修复方案

两种修复方式可选,优先推荐第一种适配新版本的写法:

方式1:修改代码适配新版本驱动

把insertDocuments函数里的断言字段替换为新版本对应属性即可:

  • 原result.result.n替换为result.insertedCount,用于校验成功插入的文档总数
  • 原result.ops替换为result.insertedIds,用于校验返回的插入文档ID数量

修改后的完整代码如下:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'FruitsDB';
const client = new MongoClient(url, {useNewUrlParser: true});

// Use connect method to connect to the server
client.connect(function(err) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  insertDocuments(db, function() {
    client.close();
  });
});

const insertDocuments = function(db, callback) {
  // Get the documents collection
  const collection = db.collection('fruits');
  // Insert some documents
  collection.insertMany([
    {a : 1}, {a : 2}, {a : 3}
  ], function(err, result) {
    assert.equal(err, null);
    assert.equal(3, result.insertedCount);
    assert.equal(3, Object.keys(result.insertedIds).length);
    console.log("Inserted 3 documents into the collection");
    callback(result);
  });
}

方式2:回退驱动到3.x版本

如果你不想修改原有代码,可以直接安装3.x版本的MongoDB驱动,执行以下npm命令即可:
npm install mongodb@3

内容的提问来源于stack exchange,提问作者MelancholicDreamer11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 04:03:03