无法使用猫鼬连接到Mongodb Atlas

时间:2020-04-12 12:38:26

标签: mongodb mongoose mongodb-atlas

我正在尝试使用node js中的猫鼬连接到在Mongodb Atlas中创建的集群,而这样做时我面临以下问题。

  1. 当我使用Mongo数据库地图集mongodb+srv://lm_dev_app:<password>@lmdev-q5biw.mongodb.net/test?retryWrites=true&w=majority中给出的连接字符串时,出现以下错误

    {错误:queryTxt EBADNAME lmdev-q5biw.mongodb.net 在QueryReqWrap.onresolve [完成时](dns.js:196:19) errno:“ EBADNAME”, 代码:“ EBADNAME”, syscall:“ queryTxt”, 主机名:“ lmdev-q5biw.mongodb.net”}

我无法在Mongodb Compass中使用此连接字符串,并且在那里也遇到相同的错误。

  1. 如果我尝试使用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");
    }
});

对这里发生的事情有任何想法。

1 个答案:

答案 0 :(得分:1)

在这里我需要强调几件事。

  1. 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

  2. 在我们传递的选项中
  3. 传递ssl:true

  4. 最后,可以使用3个选项之一连接到数据库。

    a。 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服务器。