web-dev-qa-db-ja.com

Node serverでMongoDBに接続する際の警告

MongoDBネイティブドライバーとの接続

npm install mongodb --saveでインストールされたネイティブドライバーを介してmongodbを接続するために、次のコードを記述しました

const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017";

const dbName = "game-of-thrones";
let db;

MongoClient.connect(
url,
 { useNewUrlParser: true },
  (err, client) => {
    if (err) return console.log(err);

  db = client.db(dbName);
   console.log(`Connected MongoDB: ${url}`);
   console.log(`Database: ${dbName}`);
  }
);

端末に書き込むとnode server.jsになり、次のエラーが発生しました

(ノード:3500)DeprecationWarning:現在のサーバー検出および監視エンジンは非推奨であり、将来のバージョンでは削除される予定です。新しいサーバー検出および監視エンジンを使用するには、オプション{useUnifiedTopology:true}をMongoClient.connectに渡します。接続されたMongoDB:mongodb://127.0.0.1:27017データベース:game-of-thrones

データベースは接続されていますが、警告を回避するにはどうすればよいですか

21
Momin

これらすべてを試しました。以下のコードは「Finished」をすぐに示しています。エラーも結果もありません。しばらくすると、次のようになります。

Promise { <pending> } 
the options [servers] is not supported 
the options [caseTranslate] is not supported 
the options [dbName] is not supported 
the options [credentials] is not supported 
Finished
(node:111766) UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection timed out after 30000 ms

コード(ユーザー名とパスワードは実際のデータに置き換えられます):

const url = 'mongodb://username:[email protected]:27017';
const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient(url, {useUnifiedTopology: true});

client.connect().then((client)=>{
    var db = client.db('MYDB');
    console.log ('Retrieving data');

    db.collection('products').find().toArray(function (err, result) {
        if (err) throw err
        console.log(result);
    });
});

console.log('Finished');

私のpackage.jsonには次が含まれています:

"connect-mongo": "^3.2.0",
"mongodb": "^3.4.1"
0
pdwonline