Next.js mongodb 活动连接过多

问题描述 投票:0回答:1

在 Next.js 上使用“mongodb”库中的 MongoClient 进行开发

似乎每次我重新加载页面(甚至在保存时热重新加载)都会创建一个与 mongodb 的新活动连接。

我正在缓存一个cachedClient,因此当同一运行中发生很少的请求时,它会使用相同的连接,但似乎每次重新启动/异常都会创建一个新的活动调用,并且默认情况下不会删除以前的调用(在近期)。

管理 mongodb 活动客户端连接的最佳实践是什么?

mongodb.ts

export async function connectToDatabase(): Promise<{
  client: MongoClient;
  db: Db;
}> {
  if (cachedClient && cachedDb) {
    return {
      client: cachedClient,
      db: cachedDb,
    };
  }
  const client = new MongoClient(MONGODB_URI);
  await client.connect();
  const db = client.db(MONGODB_DB);
  cachedClient = client;
  cachedDb = db;
  return {
    client: cachedClient,
    db: cachedDb,
  };
}
mongodb next.js caching
1个回答
0
投票

我建议您将

cachedClient
cachedDb
存储在 全局对象 中以用于开发目的。它会在热重载时保护您的客户端。您还可以参考官方 NextJS 示例,他们已经涵盖了这个特定案例:https://github.com/vercel/next.js/blob/canary/examples/with-mongodb/lib/mongodb.ts

此外,如果您想为 MongoDB 连接指定超时,您可以传递此处指定的参数:https://www.mongodb.com/docs/manual/reference/connection-string/#timeout-options

© www.soinside.com 2019 - 2024. All rights reserved.