繁体   English   中英

无法使用NodeJS本机驱动程序连接到MongoDB数据库

[英]Can't connect to MongoDB database with NodeJS native driver

我有一个NodeJS应用程序,我需要在其中连接到MongoDB数据库-一个连接到单个服务器,另一个连接到副本集。 我连接到下一个很好,但是连接到第二个时,出现以下错误:

/Users/iddogino/Documents/RapidApp/node_modules/mongodb/lib/mongodb/db.js:299
          throw err;
                ^
TypeError: Cannot set property 'auto_reconnect' of undefined
    at /Users/iddogino/Documents/RapidApp/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js:110:35
    at Array.forEach (native)
    at Options.decorateAndClean (/Users/iddogino/Documents/RapidApp/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js:108:16)
    at new exports.ReplSet (/Users/iddogino/Documents/RapidApp/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js:84:31)
    at /Users/iddogino/Documents/RapidApp/node_modules/mongodb/lib/mongodb/mongo_client.js:320:30
    at /Users/iddogino/Documents/RapidApp/node_modules/mongodb/lib/mongodb/db.js:296:11
    at process._tickDomainCallback (node.js:459:13)

我用来连接的代码(省略用户名和真实网址之后)是:

require('mongodb').MongoClient.connect("mongodb://password@url1:port1,url2:port2/dbName?replicaSet=setName&w=0&readPreference=secondary", function(err, doc) {...});

现在,当我独自尝试此操作时(不是在将代码连接到真正的其他数据库之后),我工作得很好……有什么想法吗?

这花了我一分钟时间才弄清楚。 该错误表明问题出在./node_modules/mongodb/lib/mongodb/connection/repl_set/options.js:110

问题是options.js:91创建一个空对象。 他们这样做是为了创建字典并为服务器删除重复的'host:port'字符串。 options.js:104循环浏览该字典中的键,并将它们盲目地加载到数组中。 如果您在全局对象Object.prototype中添加了某些内容,这将是一个问题,因为它也会添加到最终的服务器数组中。 由于您添加到Object.prototype的所有内容可能都不是服务器,因此它没有options属性,您将收到此错误。

解决方法:找出在代码中修改了Object.prototype的地方,并使其变得不太通用。 我认为他们已经在较新版本的驱动程序中对此进行了更新,但是如果您使用的是旧版本的驱动程序,则需要解决它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM