2016-12-18 9 views
5

У меня есть копия, установленная на MongoDB Atlas и это моя Монго оболочка строка соединения, которая соединяет идеально:Mongoose с 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: my_password @ от Ури, изменения rs_name к replicaSet, каждый неудачной попытки. Похоже, что мангуста не рассматривает вариант 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

Я решил эту проблему, поставив значение «Параметры» непосредственно в строке «Ури», в соответствии с документацией (http://mongoosejs.com/docs/connections.html) на «Replica Set Подключения.

// 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, я сделал это, и я обнаружил, что это настоящая проблема, проблема заключается в том, что authSource не распознается mongoose ... Я открою билет на github, чтобы связать эту проблему. –