感謝Mattias的正確答案。
我想補充一點,有時候你想要連接到另一個數據庫時有證書。 在這種情況下,您仍然可以使用URL方式進行連接,只需在URL中添加?authSource=
參數即可。
例如,假設您擁有數據庫admin
的管理員憑據,並且想要連接到數據庫mydb
。你可以做到這一點通過以下方式:
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();
...
})();
另外,如果您的密碼包含特殊字符,你仍然可以使用URL的方式是這樣的:
const dbUrl = `mongodb://adminUsername:${encodeURIComponent(adminPassword)}@localhost:27017/mydb?authSource=admin`;
const db = await MongoClient.connect(dbUrl);
注:在早期版本中,需要{ uri_decode_auth: true }
選項(作爲connect
方法的第二個參數),當使用encodeURIComponent
作爲用戶名或密碼時,但現在這個選項已經過時,沒有它就可以正常工作。
是的,經過一番研究,似乎唯一的方法來驗證是在數據庫級別,而不是服務器。所以這是有道理的。我去了#2。 –