【问题标题】:mongodb node driver connect() ignores connectTimeoutMS (and socketTimeoutMS) settingsmongodb 节点驱动程序 connect() 忽略 connectTimeoutMS(和 socketTimeoutMS)设置
【发布时间】:2022-08-03 07:33:58
【问题描述】:

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

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

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

我也尝试过使用socketTimeoutMS: 2000 并结合connectTimeoutMS: 2000socketTimeoutMS: 2000,结果是一样的。

也许我做错了什么?

    标签: node.js mongodb node-mongodb-native


    【解决方案1】:

    这与unified topology 的工作方式有关。

    您始终被驱动程序视为“已连接”,然后在引擎盖下它会自动为您重新连接,但如果您想在初始服务器选择上超时(例如,检测 mongo 最初是否已关闭),您可以使用 @987654322 执行此操作@

    我怀疑其他超时选项得到了正确的尊重,只是在堆栈的更深处,所以你不会注意到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      相关资源
      最近更新 更多