【问题标题】:"MongoError: Topology is closed, please connect" in MongoDB & NodeJS programMongoDB 和 NodeJS 程序中的“MongoError:拓扑已关闭,请连接”
【发布时间】:2021-06-21 08:21:20
【问题描述】:

我正在使用 MongoDB Atlas 和 Node.js。我正在尝试将文档插入集合“B99”,但出现错误:MongoError: Topology is closed, please connect。

这是我迄今为止尝试过的(来自其他帖子的答案,但都没有奏效):

  1. 将我的用户密码更改为只有字母(没有数字或符号)
  2. 最后删除client.close();。
  3. 重新格式化我的代码,如下所示(从另一篇文章中获得“格式”)。
  4. 将我的 IP 添加到 MongoDB Atlas 上网络访问页面的白名单中。
var MongoClient = require('mongodb').MongoClient;
const MongoUsername = process.env.MONGO_USERNAME
const MongoPassword = process.env.MONGO_PASSWORD
var uri = "mongodb+srv://" + MongoUsername + ":" + MongoPassword + "@testcluster.8mz1j.mongodb.net/BrooklynNineNine?retryWrites=true&w=majority";

const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
  const collection = client.db("BrooklynNineNine").collection("B99");
  const pizzaDocument = {
    name: "Neapolitan pizza",
    shape: "round",
    toppings: [ "San Marzano tomatoes", "mozzarella di bufala cheese" ]
  };
  const result = collection.insertOne(pizzaDocument);

  // perform actions on the collection object
  //client.close();
});

【问题讨论】:

  • 您是否检查过传递给回调的错误?它说什么?
  • @RobertKawecki 它说MongoServerSelectionError: connection <monitor> to 35.240.76.28:27017 closed
  • insertOne 是异步的,需要等待它完成才能关闭客户端。

标签: node.js database mongodb mongodb-query


【解决方案1】:

解决了。需要将 insertOne 和 client.close() 放在异步函数中(感谢@D. SM),如下所示:

const client = new MongoClient(uri, {
  userNewUrlParser: true,
  useUnifiedTopology: true,
});

async function insert(client) {
  try {
    await client.connect();
    const database = client.db("BrooklynNineNine");
    const movies = database.collection("B99");
    // create a document to be inserted
    const doc = { name: "Red", town: "kanto" };
    const result = await movies.insertOne(doc);
    console.log("Done");
  } finally {
    await client.close();
  }
}
insert(client).catch(console.dir);

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 2020-05-13
    • 2020-09-16
    • 2020-10-23
    • 1970-01-01
    • 2015-09-03
    • 2020-04-16
    • 2015-07-09
    相关资源
    最近更新 更多