如何关闭使用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
相关产品推荐
相关产品推荐

