[英]Why are multiple connections being created in my database?
我正在 NextJs 中開發一個網站,並使用 MongoDB 作為數據庫。 此代碼連接到數據庫並將其保存在緩存中。
import { MongoClient } from "mongodb";
let cache = {};
export default async function connect() {
if (cache?.client?.isConnected()) {
return cache;
}
const opts = {
useNewUrlParser: true,
useUnifiedTopology: true,
};
return MongoClient.connect(process.env.DATABASE_URL, opts).then((client) => {
cache = {
db: client.db("bd"),
client,
};
return {
client,
db: client.db("bd"),
};
});
}
我想這段代碼應該只創建一個連接,但它正在創建更多的連接。 如下圖所示,在我停止使用該網站后,創建了 18 個連接並降至 6 個。 為什么要創建多個連接? 你怎么把它變成一個?
這是我在列出用戶的路線之一上使用的代碼示例。
...
const { db, client } = await connect();
const { userThatMakeRequest } = req;
const { group } = req.query;
const users = await db
.collection("user")
.find(
{
roles: "team-user",
"team.id": userThatMakeRequest?.team?.id,
"group.id": group,
hasAccess: true,
},
{ projection: { password: 0 } }
)
.toArray();
res.status(200).json({
response: users || [],
});
驅動程序為每個已知服務器創建 1 或 2 個連接以進行監控。 應用程序連接(用於滿足查詢和寫入的連接)是分開的。
如果您創建客戶端 object 並針對運行 MongoDB 4.4 的 3 節點副本集執行一次查詢,您最終將獲得 7 個總連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.