MongoError:拓扑被破坏,NODEJS

Posted

技术标签:

【中文标题】MongoError:拓扑被破坏,NODEJS【英文标题】:MongoError: topology was destroyed, NODEJS 【发布时间】:2020-10-23 01:17:44 【问题描述】:

我正在试用 MongoDB API,但在尝试使用 insertOne() 函数时遇到了 MongoError: topology was destroyed。我不知道发生了什么,因为我对此很陌生。任何建议或帮助将不胜感激。

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://email:password@cluster0.9r3f9.mongodb.net";
const client = new MongoClient(uri,  useNewUrlParser: true );


client.connect(mongoError => 

    const col = client.db("mc").collection("mc").insertOne("license" : "1", "uuid" : 123)
    console.log(col)

);

【问题讨论】:

【参考方案1】:

client.connect() 应该接受 errorclient 两个参数,并使用该对象执行查询。此外,由于您本机使用 mongodb 驱动程序(而不是 mongoose),因此您不需要使用 useNewUrlParser: true

即使这不能解决问题,请重新启动您的 mongodb 实例并检查。

const MongoClient = require("mongodb").MongoClient;
const uri = "mongodb+srv://email:password@cluster0.9r3f9.mongodb.net";
const client = new MongoClient(uri);

client.connect((err, client) => 
  if(err) 
    console.error("ConnectionError::", err);
    return;
  
  const db = client.db("mc");
  db.collection("mc").insertOne( license: "1", uuid: 123 , (err, result) => 
    console.log(result);
  );
);

注意:.insertOne() 是异步操作,也需要回调或async/await 才能正确显示查询结果。

【讨论】:

我已经尝试过了,但现在它在第 6 行返回 TypeError: Cannot read property 'db' of undefined @MaxPan 你试过重启 mongodb。检查回调是否发送errora dn 有什么client 对象.. 更新代码以检查相同。

以上是关于MongoError:拓扑被破坏,NODEJS的主要内容,如果未能解决你的问题,请参考以下文章

MongoError:拓扑被破坏sailsjs

MongoError:拓扑被破坏sailsjs

MongoError:拓扑被破坏,我该如何修复它? [复制]

Mongoose:拓扑被破坏 MongoError

Mongoose:拓扑被破坏 MongoError

开玩笑单元测试返回“MongoError:拓扑被破坏”