正解のためにMattiasに感謝します。
別のデータベースに接続する際に、あるデータベースから資格情報を取得することがあることを追加したいと思います。 その場合でも、URLに?authSource=
パラメータを追加するだけで、URL方法を使用して接続できます。
たとえば、データベースadmin
からの管理者の資格情報があり、データベースmydb
に接続したいとします。パスワードに特殊文字が含まれている場合、あなたはまだ、このようにURLの方法を使用することができ、また
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();
...
})();
:あなたはそれを次のように操作を行うことができ
const dbUrl = `mongodb://adminUsername:${encodeURIComponent(adminPassword)}@localhost:27017/mydb?authSource=admin`;
const db = await MongoClient.connect(dbUrl);
注:以前のバージョンでは、{ uri_decode_auth: true }
オプションが必要とされましたユーザー名またはパスワードにencodeURIComponent
を使用するときは、(connect
メソッドの2番目のパラメータとして)、このオプションは廃止されました。
まあ、掘り下げた後は、認証する唯一の方法はサーバーではなく、データベースレベルであるようです。だからこれは理にかなっている。私は#2と一緒に行きました。 –