You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关闭使用mongoose.createConnection()创建的多个Mongoose数据库连接?

如何关闭通过mongoose.createConnection()创建的多连接

嘿,这个问题我之前也踩过坑!其实答案很简单——你需要调用每个由createConnection()返回的连接实例自己的close()方法,而不是用全局的mongoose.connection.close()。

原因很直观:mongoose.connection是Mongoose的默认连接实例,只有当你用mongoose.connect()创建连接时才会关联它。而createConnection()会返回一个独立的Connection对象,每个这样的对象都有自己的生命周期方法,包括关闭连接的方法。

具体操作示例

首先,创建连接时记得保存返回的连接实例:

const mongoose = require('mongoose');

// 创建两个独立的数据库连接
const db1Connection = mongoose.createConnection('mongodb://localhost:27017/db1');
const db2Connection = mongoose.createConnection('mongodb://localhost:27017/db2');

然后,当你需要关闭连接时,直接调用对应实例的close()方法即可:

// 关闭第一个数据库连接
db1Connection.close()
  .then(() => console.log('db1连接已成功关闭'))
  .catch(err => console.error('关闭db1连接时出错:', err));

// 关闭第二个数据库连接
db2Connection.close()
  .then(() => console.log('db2连接已成功关闭'))
  .catch(err => console.error('关闭db2连接时出错:', err));

批量关闭多个连接

如果你有多个连接需要一次性关闭,可以用Promise.all()来批量处理:

Promise.all([db1Connection.close(), db2Connection.close()])
  .then(() => console.log('所有数据库连接已关闭'))
  .catch(err => console.error('关闭连接时出现错误:', err));

你也可以用async/await让代码更简洁:

async function closeAllConnections() {
  try {
    await db1Connection.close();
    await db2Connection.close();
    console.log('所有连接已成功关闭');
  } catch (err) {
    console.error('关闭连接失败:', err);
  }
}

// 调用函数
closeAllConnections();

内容的提问来源于stack exchange,提问作者Jabez_Brew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:44:11