2016-12-18 65 views
5

我有一個副本上的MongoDB地圖集合,這是我這完全連接蒙戈外殼的連接字符串:貓鼬與ReplicaSet阿特拉斯

$ mongo "mongodb://MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE?replicaSet=MY_REPLICASET-NAME-shard-0" --ssl --username MY_USERNAME --password MY_PASSWORD --authenticationDatabase MY_ADMIN_DATABASE 

我怎樣才能將其轉換爲在貓鼬使用?我如何構建我的uri和options變量?

我嘗試沒有成功如下:

// connection string using mongoose: 
    var uri = 'mongodb://MY_USER:[email protected]' + 
    'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' + 
    'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' + 
    'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE'; 

    var options = { 
    replset: { 
     ssl: true, 
     authSource: 'MY_ADMIN_DATABASE', 
     rs_name: 'MY_REPLICASET_NAME-shard-0' 
    } 
    }; 

    mongoose.connect(uri, options); 
    var db = mongoose.connection; 

我試過,包括用戶:並通過:在選項,清除MY_USER:從URI,改變rs_name到replicaSet,每一個不成功的嘗試MY_PASSWORD @。似乎貓鼬沒有考慮authSource選項。

使用mongojs,它工作正常用下面的代碼:

// connection string using mongojs: 
    var uri = 'mongodb://MY_USER:[email protected]' + 
    'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' + 
    'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' + 
    'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE'; 

    var options = { 
    ssl: true, 
    authSource: 'MY_ADMIN_DATABASE', 
    replicaSet: 'MY_REPLICASET_NAME-shard-0' 
    }; 

    var db = mongojs(uri,'', options); 

但是,我需要在我的項目中使用貓鼬因爲ODM。

如何使用貓鼬構建我的uri和options變量?

回答

6

我解決了這個問題,並直接將「選擇」值「URI」字符串,並根據關於「副本集文檔(http://mongoosejs.com/docs/connections.html)連接「部分。

// connection string using mongoose: 
var uri = 'mongodb://MY_USER:[email protected]' + 
    'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' + 
    'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' + 
    'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE' + 
    'ssl=true&replicaSet=MY_REPLICASET_NAME-shard-0&authSource=MY_ADMIN_DATABASE'; 

mongoose.connect(uri); 
var db = mongoose.connection; 

現在,它工作正常!

+0

你用什麼版本的貓鼬? –

+1

「mongoose」:「^ 4.10.8」@AdeelImran Imran –

0

添加用戶名和密碼的數據庫連接

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] 

Standard Connection String Format

+0

感謝Engin,我做到了,我發現了真正的問題,問題在於不被mongoose識別的authSource ...我將在github上打開一張票來解決這個問題。 –