2016-12-18 23 views
5

Mam replikę ustawiony na MongoDB Atlasu i jest to moja Mongo powłoki ciąg połączenia, który łączy doskonale:Mongoose z ReplicaSet na Atlas

$ 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 

Jak mogę przekonwertować go do wykorzystania w mangusta? Jak mogę zbudować moją zmienną uri i opcje?

Próbowałem następujących bez powodzenia:

// 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; 

Próbowałem tym użytkownika, a hasło: od opcji, usuwając MY_USER: MY_PASSWORD @ od URI, zmień rs_name do replicaSet, każdej nieudanej próbie. Wygląda na to, że mangusta nie rozważa opcji authSource.

Używanie mongojs, współpracuje z następującego kodu:

// 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); 

Ale muszę korzystać mongoose ponieważ ODM w moim projekcie.

Jak mogę zbudować moją zmienną uri i opcje za pomocą mangusty?

Odpowiedz

6

postanowiłem ten problem wprowadzenie wartości „Opcje” bezpośrednio w ciąg „uri”, zgodnie z dokumentacją (http://mongoosejs.com/docs/connections.html) na „zestaw replik Sekcja Połączenia.

// 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; 

Teraz działa poprawnie!

+0

jakiej wersji mangusty używacie? –

+1

"mangusta": "^ 4.10.8" @AdeelImran Imran –

0

Dodaj nazwę użytkownika i hasło do połączenia z bazą danych

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

Standard Connection String Format

+0

Dzięki Engin, zrobiłem to i ja odkryłem prawdziwy problem, problemem jest authSource, który nie jest rozpoznawany przez mangusta ... Otworzę bilet na github, aby odnieść ten problem. –