我正在使用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: 2000
和 socketTimeoutMS: 2000
组合起来,结果是相同的。
也许我做错了什么?
最佳答案
这与 unified topology 的方式有关有效。
驱动程序始终认为您“已连接”,然后在后台它会自动为您重新连接,但如果您想在初始服务器选择上超时(例如,检测 mongo 最初是否已关闭),您可以这样做与 serverSelectionTimeoutMS
我怀疑其他超时选项是否得到了正确的处理,只是在堆栈的更深处,这样你就不会注意到它。
关于node.js - mongodb Node 驱动程序 connect() 忽略 connectTimeoutMS (和 socketTimeoutMS)设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72699235/