【问题标题】:Failing to connect to mongodb (mongolab) from nodejs app running localhost无法从运行 localhost 的 nodejs 应用程序连接到 mongodb (mongolab)
【发布时间】:2014-12-30 09:30:33
【问题描述】:

我正在尝试使用以下代码进行连接。
我在本地运行 nodejs 应用程序,但无法使用 MongoDb Native Driver 连接到 MongoLab DB。
大约 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服务器上开启认证了吗?
  • mongoDb 服务器在 MongoLab 上。我刚刚解决了。看看我的回答

标签: node.js mongodb heroku


【解决方案1】:

我解决了,但我不知道是什么导致了问题。
我怀疑是 DNS 问题。

于是我去了终端,第一次运行:

ping  ds00000.mongolab.com

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

检查主机。

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

最后,如果这两个都成功了,那么端口就没有问题了。
所以,然后我将代码中的主机名更改为 mongoLab 中该主机名的 IP,从而解决了出现的错误。
注意:mongoLab 数据库主机的 IP 出现在终端第二个命令的响应中。

【讨论】:

  • 嘿,我有时仍然会收到此错误。第二个命令不会为我生成任何响应。知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
  • 2019-05-24
  • 2020-06-26
  • 1970-01-01
  • 2021-09-20
  • 2019-12-14
相关资源
最近更新 更多