Danke Mattias für die richtige Antwort.
Ich möchte hinzufügen, dass Sie manchmal Anmeldeinformationen von einer Datenbank haben, während Sie mit einem anderen verbinden möchten. In diesem Fall können Sie den URL-Weg weiterhin verwenden, um eine Verbindung herzustellen, indem Sie einfach den Parameter ?authSource=
zu URL hinzufügen.
Nehmen wir zum Beispiel an, Sie verfügen über Administratorberechtigungen aus der Datenbank admin
und möchten eine Verbindung mit der Datenbank mydb
herstellen. Sie können es die folgende Art und Weise tun:
const MongoClient = require('mongodb').MongoClient;
(async() => {
const db = await MongoClient.connect('mongodb://adminUsername:[email protected]:27017/mydb?authSource=admin');
// now you can use db:
const collection = await db.collection('mycollection');
const records = await collection.find().toArray();
...
})();
Auch, wenn Ihr Passwort Sonderzeichen enthält, können Sie immer noch URL Art und Weise wie diese verwenden:
const dbUrl = `mongodb://adminUsername:${encodeURIComponent(adminPassword)}@localhost:27017/mydb?authSource=admin`;
const db = await MongoClient.connect(dbUrl);
Hinweis: In früheren Versionen { uri_decode_auth: true }
Option erforderlich war, (als zweiter Parameter zu connect
Methode) bei der Verwendung von für Benutzername oder Passwort, aber jetzt ist diese Option veraltet, es funktioniert gut ohne sie.
Ja, nach einigem Umgraben scheint es, als ob die einzige Möglichkeit zur Authentifizierung auf der db-Ebene ist, nicht auf dem Server. Das macht also Sinn. Ich ging mit # 2. –