node.js - mongodb Node 驱动程序 connect() 忽略 connectTimeoutMS (和 socketTimeoutMS)设置

标签 node.js mongodb node-mongodb-native

我正在使用mongodb node driver版本 4.7.0(撰写本文时最新版本)。我有以下代码片段来连接到数据库:

var url = "<my mongodb:// URI>";
var client = require('mongodb').MongoClient;
client.connect(
    url,
    {
        connectTimeoutMS: 2000
    },
    <callback function>);

因此,如果 2 秒(2000 毫秒)后数据库不存在,则应该超时。但是,超时发生在 30 秒(30000 毫秒),我猜这是该设置的默认值。换句话说,似乎 connectTimeoutMS 被忽略了。

我还尝试过使用 socketTimeoutMS: 2000 并将 connectTimeoutMS: 2000socketTimeoutMS: 2000 组合起来,结果是相同的。

也许我做错了什么?

最佳答案

这与 unified topology 的方式有关有效。

驱动程序始终认为您“已连接”,然后在后台它会自动为您重新连接,但如果您想在初始服务器选择上超时(例如,检测 mongo 最初是否已关闭),您可以这样做与 serverSelectionTimeoutMS

我怀疑其他超时选项是否得到了正确的处理,只是在堆栈的更深处,这样你就不会注意到它。

关于node.js - mongodb Node 驱动程序 connect() 忽略 connectTimeoutMS (和 socketTimeoutMS)设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72699235/

相关文章:

node.js - MongoDB NodeJS native 驱动程序(mongodb) 与 Mongo Shell 性能对比

Node.js 驱动程序 "mongodb"findAndModify() 的实现 - 如何指定字段?

node.js - Sequelize 查询返回 Promise { _bitField : . ..}

node.js - 如何在mongodb中从日期时间分割日期?

node.js - 将 state/customState 与 Passport-azure-ad 结合使用

node.js - MongoDB 聚合在日期字段分组后添加两个日期之间缺少的月份

node.js - Mongodb聚合$match mongo和javascript之间日期处理不一致

node.js - 创建用户,回调

node.js - 如何在数组中查找数组的大小?

node.js - 在 Linux 服务器上的何处部署 node.js 应用程序?