首页 > 解决方案 > 处理从 NodeJS 连接和关闭 MongoDB 客户端的正确方法是什么(不使用 Mongoose!)?

问题描述

export const client = new MongoClient(
  process.env.ATLAS_URI,
  // TODO: Figure out what this is and why it's needed to turn off deprecation warning
  {
    useUnifiedTopology: true,
  }
);

遵循本指南,一切都有意义……但她只是打了一个“电话”,然后close()

我需要继续重复调用:

export const getAllProducts = async () => {
  try {
    await client.connect();
    const cursor = await client.db("products").collection("data").find();
    return await cursor.toArray();
  } catch (err) {
    throw new Error(err);
  } finally {
    await client.close();
  }
};

第一个电话没问题。在那之后:Error: MongoError: Topology is closed, please connect

老实说,我不太明白这是什么Topology意思,但显然它是close()导致问题的原因。

我设置new MongoClient并且其中ATLAS_URI 确实有“数据库名称”是没有意义的......那么为什么我必须再次连接指定呢?

无论如何,我的❓代表的主要部分是:我只是保持一个单独的过程而不是close它吗?MongoClient我每次都从一个全新的开始吗?

标签: node.jsmongodb

解决方案


我将在这里简单回答一下,以防有人遇到这个问题。

Node.js 驱动程序的 Mongodb 文档将为您提供简单的示例,其中包括 client.connect() 和 client.close() 方法,只是为了给您一个可运行的示例,让您在真实的服务器应用程序中对数据库进行简单调用您只是在启动期间打开与客户端的连接一次,通常仅在关闭服务器应用程序时关闭。

简而言之:您不需要在每次想要对数据库执行某些操作时打开、关闭和连接。


推荐阅读