Heroku Mongoose连接错误:SET中未找到主服务器



i在蒙古上设置了mongodb副本。

我正在使用nodejs mongoose。当我试图从本地机器连接时,一切都很好。但是在部署到Heroku之后,发生了一些错误,Mongoose遇到了奇怪的错误:

[Error: no primary server found in set]

在这里一些代码(server.js):

async.series([
  function(callback){
    console.log('DB Connection: ' + siteConf.mongo_url);
    mongoose.connect(siteConf.mongo_url, siteConf.mongo_options, callback);
  },      
  function(callback){
    http.createServer(app).listen(siteConf.port, callback);
  }
],
function(err, results){
 if (err) {
   console.log(err);
 }
 console.log('Running in ' + (process.env.NODE_ENV || 'development') + ' mode @ ' + siteConf.uri);
  }
);

此URL我用作连接字符串:

mongodb://username:password@someid-a0.mongolab.com:39897/pm_prod,mongodb://someid-a1.mongolab.com:39897

我不明白的主要内容是:我的手工和Heroku云托管之间有什么区别。

我已经尝试删除node_modules并安装NPM,以确保我的版本与Heroku上相同。(因为Heroku在每个部署上都这样做)。

谢谢,对不起,我的英语不好

这可能是一个URI问题。DB URI的格式为:

mongodb://<user>:<pass>@host:port,host:port,...,host:port/db_name

这意味着

mongodb://username:password@someid-a0.mongolab.com:39897/pm_prod,mongodb://someid-a1.mongolab.com:39897

应该是:

mongodb://username:password@someid-a0.mongolab.com:39897,someid-a1.mongolab.com:39897/pm_prod

也值得注意的是:如果您使用的是Heroku的蒙古附加组件,则您的URI可作为process.env.mongolab_uri的环境变量可用,因此您不必放置代码中的URI。

这也可能与关于Heroku和Mongo之间的连通性的持续问题有关。请参阅https://github.com/jcottr/temps-mort,其中引用了Node Mongo驱动程序的两张门票:

https://jira.mongodb.org/browse/node-4

https://jira.mongodb.org/browse/node-5

相关内容

最新更新