2016-02-27 121 views
0

我不能連接使用以下代碼來mongolab:無法連接使用的createConnection到mongolab()

// DATABASE CONNECTION 
var db1 = mongoose.createConnection('mongodb://foo:[email protected]:11168/db1'); 
var db2 = db1.useDb('mongodb://foo:[email protected]:12341/db2'); 

進出口試圖讓我用.createConnection()用於第一分貝來創建跨2個數據庫的多連接,然後db1.useDb()爲第二個分貝。這對localhost完全正常,但是當我切換到蒙古包時,一切都崩潰了。

我的mongolab設置沒有問題,因爲當我只使用connect()函數時:var db1 = mongoose.connect('mongodb://foo:[email protected]:11168/db1');它連接沒有問題。但是,當我使用上面給出的代碼(第一個代碼塊)時,導致出現此錯誤:MongoError: database names cannot contain the character '.'

我的目標是能夠連接到mongolab上的多個數據庫。

我正在使用最新的mongoose npm。

+0

考慮到錯誤給出它不可能是你的任何例子是你的實際連接字符串(請不要發佈),但錯誤當然會指出實際連接字符串中的確切問題。 –

+0

當然,他們不是實際的連接uri。但正如我所說的,當我使用'.connect()'使用非常完全相同的mongolab uri時,它完美地工作。 – CENT1PEDE

+0

@BlakesSeven無論如何,這很好,我想出了一個解決這個問題的方法。 – CENT1PEDE

回答

0

我找到了解決這個問題的辦法。如果有人可能會遇到同樣的問題,我會發布此答案以供將來參考。

注意下面的代碼:

var db1 = mongoose.createConnection('mongodb://foo:[email protected]:11168/db1'); 
var db2 = db1.useDb('mongodb://foo:[email protected]:12341/db2'); 

而不是使用db1的連接,我使用它代替:

var db1 = mongoose.createConnection('mongodb://foo:[email protected]:11168/db1'); 
var db2 = mongoose.createConnection('mongodb://foo:[email protected]:12341/db2'); 

db2也有它自己的連接。

免責聲明,我不知道這是否是正確的方式來做到這一點,但同時它解決了問題。也許這樣做,你可以創建2連接事件檢查db1db2

+0

這是如何回答MongoError:數據庫名稱不能包含字符'。'? –

+0

那麼它解決了這個問題。我試圖解決導致MongoError的問題:數據庫名稱不能包含字符'。'本身不是問題。請在投票解決方案之前閱讀免責聲明。我清楚地說,「這可能不是正確的解決方案」,我只是將其作爲參考,以防有人可能會遇到同樣的問題。 – CENT1PEDE

+0

好吧,這很公平,因爲「swicthing數據庫」和一個全新的系列有所不同。但你應該意識到這仍然是一個非常基本的錯誤。 –