我正在尝试使用节点js中的猫鼬连接到在Mongodb Atlas中创建的集群,而这样做时我面临以下问题。
当我使用Mongo数据库图集中给出的连接字符串时,mongodb+srv://lm_dev_app:<password>@lmdev-q5biw.mongodb.net/test?retryWrites=true&w=majority
出现以下错误
{错误:QueryReqWrap.onresolve上的queryTxt EBADNAME lmdev-q5biw.mongodb.net [完成时](dns.js:196:19)errno:'EBADNAME',代码:'EBADNAME',系统调用:'queryTxt',主机名:' lmdev-q5biw.mongodb.net'}
我无法在Mongodb Compass中使用此连接字符串,并且在那里也遇到了相同的错误。
如果我尝试使用mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net/test
以下方式进行连接,则会出现以下错误
MongooseServerSelectionError:到54.66.221.230:27017的连接已关闭
但是我能够使用Mongodb Compass连接到每个节点,这消除了我的ipaddress未被列入白名单的可能性。
这是我正在使用的示例代码
const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net/test", {
useNewUrlParser: true,
useUnifiedTopology: true,
replicaSet: "LMDEV"
}, (err) => {
if (err) {
console.log(err);
} else {
console.log("Successful");
}
});
对这里发生的事情有任何想法。
在这里我需要强调几件事。
Mongodb Atlas中显示的默认连接字符串似乎是错误的。它告诉你mongodb+srv://<username>:<password>@<cluster_url>/test?retryWrites=true&w=majority
。但是我曾经mongodb://<username>:<password>@<node_url>:27017/
使它工作。您也可以使用mongodb://<username>:<password>@<node_url>:27017/admin
。
传递ssl:true
我们正在传递的选项。
最后,可以使用3个选项之一来连接到数据库。
一种。 const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/", { useNewUrlParser: true, useUnifiedTopology: true, authSource:"admin", ssl: true, }, (err) => { if (err) { console.log(err); } else { console.log("Successful"); } });
b。 const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/", { useNewUrlParser: true, useUnifiedTopology: true, authSource:"admin", ssl: true, }, (err) => { if (err) { console.log(err); } else { console.log("Successful"); } });
C。 const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/admin", { useNewUrlParser: true, useUnifiedTopology: true, ssl: true, }, (err) => { if (err) { console.log(err); } else { console.log("Successful"); } });
编辑1:在与Atlas支持团队聊天之后,我被告知第1点中的问题是由于与服务提供商的DNS解析问题有关。因此,我更改了DNS设置,使其指向公共DNS服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句