2017-02-27 4 views
0

Ich habe einen Benutzer mit der Rolle: {role: 'root', db:'admin'}, die Zugriff auf alle Datenbanken in meiner Mongo-Instanz haben sollte. Ich verwende mongoskin in node.js, um mit Mongo zu interagieren. Mein Problem ist, dass es nicht korrekt auf meine Datenbanken zugreift. Wenn ich mitWie authentifiziere ich mich korrekt in Mongo für einen Benutzer, der Zugriff auf mehrere Datenbanken hat?

mongodb://owner:[email protected]:27017/mydatabase 

authentifizieren gibt mir es einfach MongoError: Authentication failed. Wenn ich stattdessen auth mit:

mongodb://owner:[email protected]:27017/admin 

es authentifiziert, aber ich kann nicht mydatabase zugreifen.

Hier ist mein Verbindungscode:

var connection = mongoskin.db("mongodb://owner:[email protected]:27017/admin", {journal:true, auto_reconnect:true}) 

Ich gehe davon aus, dass, da ich dort die Admin-Datenbank bin Zugriff, das ist die einzige, mit dem sie kommuniziert. Also versuchte ich dies dann tun:

var mydatabaseConnection = connection.db('mydatabase') 

Aber wenn ich, dass mein App keine Ergebnisse für Abfragen auf Sammlungen Rückkehr, die ich habe Daten kennen. Was mache ich hier falsch? Wie kann ich diesen Benutzer auf eine andere Datenbank als admin zugreifen lassen?

Antwort

1

Ok, so fand ich heraus, dass Mongoskins db Methode einfach nicht funktioniert. Endlich bin ich gezwungen, mongoskin komplett aus meiner Codebasis zu entfernen. Die wirkliche Antwort hier ist, verwenden Sie nicht mongoskin.

Dieser Code arbeitete mit Mongo nativen:

MongoClient.connect("mongodb://owner:[email protected]:27017/admin", {journal: true, auto_reconnect:true}).then(function(db) {  
    console.log("Connected!") 

    var mydb = db.db('mydatabase') 

    var User = mydb.collection('User') 
    return User.find({}).toArray().then(function(users) { 
     console.log(users) 
     db.close()   
    }) 
}).catch(function(e) { 
    console.log(e.stack) 
}) 
Verwandte Themen