node.js - 处理从 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.js 驱动程序的 Mongodb 文档将为您提供简单的示例,其中包括 client.connect() 和 client.close() 方法,只是为了给您一个可运行的示例,让您在真实的服务器应用程序中对数据库进行简单调用您只是在启动期间打开与客户端的连接一次,通常仅在关闭服务器应用程序时关闭。
简而言之:您不需要在每次想要对数据库执行某些操作时打开、关闭和连接。
推荐阅读
- css - Arial 字体看起来从 HTML 到 mpdf 转换不同
- ms-access - 在 Ms Access Form 的文本框中调用先前的值输入
- spring-boot - 如何将 OAuth 2.0 不记名令牌添加到 WebClient
- git - 使用特定的 subrepo 分支创建顶级 repo 分支
- react-native - 在 iOS 中打开模式时,“react-native-loading-spinner-overlay”不起作用
- python - 文件名、目录名或卷标语法不正确。面料.api.local
- python - 我怎样才能得到文件python中第一行之后的所有行?
- python - 如何用sql server中的NULL替换Dataframe中的nan?
- c# - 在 MassTransit 中,如果我为预定消息设置 TTL,是否包括初始延迟?
- c# - 如何增加进度条?