2016-12-18 4 views
5

Ich habe eine Replikatsatzes auf MongoDB Atlas und das ist meine Mongo Mantelverbindungszeichenfolge, die perfekt verbindet:Mongoose mit ReplicaSet auf 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 

Wie kann ich es umwandeln in Mungo zu benutzen? Wie kann ich meine URI und Optionenvariable erstellen?

ich ohne Erfolg folgende versucht:

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

Ich habe einschließlich Benutzer versucht: und übergeben: an Optionen, Entfernen my_user: my_password @ aus uri, ändern rs_name zu replicaSet, jedem erfolglosen Versuch. Es scheint, dass Mungo die Option authSource nicht berücksichtigt.

die mongojs verwenden, funktioniert es gut mit dem folgenden Code:

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

Aber ich brauche Mungo weil der ODM in meinem Projekt zu verwenden.

Wie kann ich meine uri und Optionen Variable mit Mungo bauen?

Antwort

6

ich dieses Problem behoben 'Optionen' Wert direkt in 'uri' Zeichenfolge, nach Dokumentation (http://mongoosejs.com/docs/connections.html) auf ‚Replica Set setzen Verbindungen 'Abschnitt.

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

Jetzt funktioniert es gut!

+0

Welche Version von Mungo benutzt du? –

+1

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

0

hinzufügen Benutzername und Passwort Datenbankverbindung

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

Standard Connection String Format

+0

Danke Engin, ich habe es getan und ich entdecke das eigentliche Problem, das Problem ist die AuthSource, die nicht von Mungo erkannt wird ... Ich werde ein Ticket auf GitHub öffnen, um dieses Problem zu beziehen. –

Verwandte Themen