【问题标题】:Could not get mongodb connectivity with nodejs无法获得与 nodejs 的 mongodb 连接
【发布时间】:2021-10-01 12:31:59
【问题描述】:

我已经在 nodejs 中尝试过,但我的控制台中的输出未定义

// Connect using a MongoClient instance
const MongoClient = require("mongodb").MongoClient;
const test = require("assert");
// Connection url
const url = "mongodb://localhost:27017";
// Database Name
const dbName = "test";
// Connect using MongoClient
const mongoClient = new MongoClient(url);
mongoClient.connect(function (err, client) {
  const db = client.db(dbName);
  try {
    db.collection("employeeDetails")
      .find({})
      .toArray(function (err, res) {
        console.log(res);
      });
  } catch (e) {
    console.log(e);
  } finally {
    client.close();
  }
});

我在 mongodb 中有数据:

如何在我的控制台中获取我的员工详细信息如果有任何帮助,我们将不胜感激

【问题讨论】:

    标签: node.js mongodb mongodb-nodejs-driver


    【解决方案1】:

    您在获得结果之前关闭了连接。如果您在 toArray() 中打印 err 以及结果,您将看到以下错误 -

    MongoExpiredSessionError: Cannot use a session that has ended
    

    发生这种情况是因为 db.collection("employeeDetails")... 被调用但在回调中等待结果,直到那时它继续前进,因为在该语句之后您正在退出 try-catch,您进入 finally 关闭会话。在处理 db.collection... 调用时,此会话已结束,您会看到此错误。

    您可以使用异步等待。修改您的代码如下 -

    // Connect using a MongoClient instance
    const MongoClient = require("mongodb").MongoClient;
    const test = require("assert");
    // Connection url
    const url = "mongodb://localhost:27017";
    // Database Name
    const dbName = "test";
    // Connect using MongoClient
    const mongoClient = new MongoClient(url);
    mongoClient.connect(async function (err, client) {
      const db = client.db(dbName);
      try {
        const result = await db.collection('employeeDetails').find({}).toArray();
        console.log(result);
      } catch (e) {
        console.log(e);
      } finally {
        client.close();
      }
    });
    
    

    mongoClient.connect(async function (err, client).. 行中,我们在回调函数之前使用 async,稍后在内部使用 -

    const result = await db.collection('employeeDetails').find({}).toArray();
    

    在此之后console.log 将正确打印您的结果。

    【讨论】:

    • 是的,非常感谢您
    【解决方案2】:

    这对我有用 let result = await collection(collection).find(query).toArray()

    【讨论】:

      猜你喜欢
      • 2023-02-07
      • 1970-01-01
      • 2016-12-05
      • 2020-09-13
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2021-06-25
      • 2019-01-12
      相关资源
      最近更新 更多