无法从运行在本地主机的Node.js应用程序连接到MongoDB(MongoLab)

3
我正在尝试使用以下代码进行连接。
我在本地运行nodejs应用程序,但无法使用MongoDb原生驱动程序连接到MongoLab数据库。
大约30秒后,返回的错误说:
{"name":"MongoError","message":"no valid seed servers in list"}

我需要在其他地方声明吗?我缺少了什么?
当我在Heroku上实时运行它时,连接很好。
此外,当我从终端(shell)运行它时,连接也很好。

   var MongoClient = require('mongodb').MongoClient;
   var util = require('util');
   var assert = require('assert');

   var auth = {
     user: 'root',
     pass: 'blabla',
     host: 'blabla.mongolab.com',
     port: 63879,
     name: 'heroku_blabla'
   };

        // Connection URL
        var url = util.format('mongodb://%s:%s@%s:%d/%s',
            auth.user, auth.pass, auth.host, auth.port, auth.name);

        // Use connect method to connect to the Server
        MongoClient.connect(url, function(err, db) {
            assert.equal(null, err);
            console.log("Connected correctly to server");

            db.close();
        });   

你在 MongoDB 服务器上开启了认证吗? - Malcolm Murdoch
MongoDB服务器在MongoLab上。我刚刚解决了它。请查看我的答案。 - anestis
1个回答

4

我解决了这个问题,但是我不知道问题的原因。
我怀疑是DNS问题。

于是我进入终端并首先运行:

ping  ds00000.mongolab.com

(将00000更改为您的MongoLab DB端口)

检查主机。

然后我运行:nc -w 3 -v ds000000.mongolab.com 000000

最后,如果这两个成功,则端口没有问题。
因此,我使用mongoLab中该主机名的IP更改了我的代码中的主机名,并解决了出现的错误。
注意:mongoLab DB主机的IP显示在终端中第二个命令的响应中。


1
嘿,我有时候仍然会遇到这个错误。第二个命令对我没有任何响应。你知道为什么吗? - Rohit Lala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接