MongoDB v4.0中MongoClient.isConnected()消失?如何判断连接状态
MongoDB 4.0+ 判断连接状态的替代方案
MongoDB Node.js 驱动从4.0版本开始正式移除了
MongoClient实例上的isConnected()方法,原方法的能力可通过以下两种方案实现:
方案1:发送ping命令校验(生产环境推荐)
该方案会实际向MongoDB服务器发送心跳请求,可真实反映当前连接的可用状态,无特殊需求优先使用该方式:
import { MongoClient } from "mongodb"; async function isMongoConnected(client: MongoClient): Promise<boolean> { try { await client.db().admin().ping(); return true; } catch (error) { return false; } } // 调用示例 const client = await MongoClient.connect(uri, options); const connectedStatus = await isMongoConnected(client);
方案2:读取本地拓扑状态(轻量快速校验)
该方案仅读取驱动本地维护的连接拓扑状态,不会发起网络请求,适合快速校验、本地调试场景使用:
import { MongoClient } from "mongodb"; function isMongoConnected(client: MongoClient): boolean { return !!client.topology && client.topology.isConnected(); } // 调用示例 const client = await MongoClient.connect(uri, options); const connectedStatus = isMongoConnected(client);
补充说明
- 若你是在
await MongoClient.connect执行完成后立刻判断状态,只要该方法未抛出异常,默认连接已建立成功,无需额外做连接校验 - 驱动默认已开启自动重连能力,连接断开后会自动尝试重建连接,无需业务层频繁轮询判断状态
内容的提问来源于stack exchange,提问作者Jolan B.
相关产品推荐
相关产品推荐

