首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MariaDB 資料庫

Mongoose 重複連接 MongoDB 報錯「Trying to open unclosed connection」解決方案

     編輯:MariaDB 資料庫

問題場景

Express 路由中每次請求都執行 mongoose.connect(),首次正常,刷新即報:

Error: Trying to open unclosed connection.

錯誤原因

Mongoose 默認維護單一連接池,重複調用 connect() 會嘗試創建新連接而舊連接未關閉,觸發衝突。

最佳實踐:單例連接模組

  1. 創建 mongoose.js:
    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/nuaidibi');
    module.exports = mongoose;
    
  2. 各路由引用複用:
    var mongoose = require('./mongoose.js');
    // 直接使用 mongoose.model()、mongoose.connection 等
    // 無需再次 connect()/disconnect()
    

原理

  • Node 模組緩存機制保證 mongoose.connect() 僅執行一次
  • 連接池自動管理生命周期,無需手動開關
  • 生產環境可加 mongoose.connection.on('error', ...) 監控
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved