2013-08-06 5 views
5

herokuでmongolabを使用してnode.jsとmongodbを作成する際に問題が発生しています。私はHow do I setup MongoDB database on Heroku with MongoLab?How do I manage MongoDB connections in a Node.js web application?のような他の問題を読んだが、私はまだ私の接続を設定することはできません。ログでは、[エラー:...への接続に失敗しました]と言う:herokuでnode.jsのmongolabに接続できません

var mongoUri = mongodb://heroku_app17328644:{password}@ds037518.mongolab.com //taken from process.env.MONGOLAB_URI 

var host = 'mongodb://heroku_appXXXXXX:{password}@ds037518.mongolab.com'; 
var port = '37518'; 
var database = 'heroku_appXXXXXX'; 

Provider.db = new Db(database, new Server(host, port, { safe: true }, { auto_reconnect: true }, {})); 
Provider.db.open(function(err, db){ 
console.log(db); //null 
if (err) console.log(err); 
else console.log('success'); 
}); 

は何午前、私は次のコードを持っているenv.I MONGOLAB_URIプロセスからデシベル、ホストとポートをtakendいる

を私は間違っている?

+0

あなたが得るエラーメッセージは何ですか? – Derick

+0

彼は 'Error:接続に失敗しました...'を取得し、 'db'はnullです:) – randunel

+0

これは完全なエラーメッセージではありません... – Derick

答えて

13

コアの問題は、MongoDB URIをホスト名として使用しようとしているようです。

はここURIとMongoClientを使用して接続する方法は次のとおりです。もちろん

var mongodb = require('mongodb'); 
var uri = 'mongodb://user:[email protected]:port/db'; 
mongodb.MongoClient.connect(uri, function (err, db) { 
    /* adventure! */ 
}); 

あなたは、実際の接続パラメータについてuriuserpasshostport、およびdbを代用することをお勧めします。あなたがMongoLab add-on for Herokuを使用している場合は、このような環境からURIを取得できます。そのオプションは除外できるように

var uri = process.env.MONGOLAB_URI; 

MongoClientセーフモードを使用して、デフォルトです。 auto_reconnectを指定するには、サーバーオプションとして渡します。

var mongodb = require('mongodb'); 
var uri = 'mongodb://user:[email protected]:port/db'; 
mongodb.MongoClient.connect(uri, { server: { auto_reconnect: true } }, function (err, db) { 
    /* adventure! */ 
}); 
4

これは私のやり方です。この方法で、私のアプリケーションは、開発マシンの "テスト"データベースと、Herokuでデプロイされて実行されている "mongolab"データベースに接続します。私自身の場合

mongoose = require("mongoose"); 
mongoURI = 'mongodb://localhost/test'; 
mongoose.connect(process.env.MONGOLAB_URI || mongoURI); 
4

は、私は、構成設定heroku configを照会し、それがMongoDBのがMONGODB_URIとして追加されていることが判明しました。だから、

、私のようなURIにprocess.env.MONGODB_URIを追加しました:

var uri = process.env.MONGODB_URI || process.env.MONGOHQ_URL || process.env.MONGOLAB_URI; 
関連する問題