web-dev-qa-db-ja.com

サーバーの検出と監視エンジンは廃止予定

私はNode.jsアプリでMongooseを使用していますが、これが私の構成です。

mongoose.connect(process.env.MONGO_URI, {
   useNewUrlParser: true,
   useUnifiedTopology: true,
   useCreateIndex: true,
   useFindAndModify: false
}).then(()=>{
    console.log(`connection to database established`)
}).catch(err=>{
    console.log(`db error ${err.message}`);
    process.exit(-1)
})

しかし、コンソールではまだ警告が表示されます:

DeprecationWarning:現在のサーバー検出および監視エンジンは非推奨であり、将来のバージョンでは削除される予定です。新しいサーバー検出および監視エンジンを使用するには、オプション{useUnifiedTopology:true}をMongoClientコンストラクターに渡します。

何が問題ですか?以前はuseUnifiedTopologyを使用していませんでしたが、現在はコンソールに表示されています。私はそれを設定に追加しましたが、それでもこの警告が表示されます、なぜですか? MongoClientも使用していません。

編集する

Felipe Pletsが答えたところ、Mongooseに問題があり、それ以降のバージョンでこのバグを修正しました。したがって、マングースバージョンを更新することで問題を解決できます。

56
iLiA

useUnifiedTopologyオプションを追加し、trueに設定します。

他の残りのDeprecationWarningを処理するmongoose.connectオプションの他の3つの構成を設定します。

この構成は私にとってはうまくいきます!

_const url = 'mongodb://localhost:27017/db_name';
mongoose.connect(
    url, 
    { 
        useNewUrlParser: true, 
        useUnifiedTopology: true,
        useCreateIndex: true,
        useFindAndModify: false
    }
)
_

これは4DeprecationWarningを解決します。

  1. 現在のURL文字列パーサーは非推奨であり、将来のバージョンでは削除される予定です。新しいパーサーを使用するには、オプション{useNewUrlParser:true}をMongoClient.connectに渡します。
  2. 現在のサーバー検出と監視エンジンは非推奨であり、将来のバージョンでは削除される予定です。新しいサーバー検出および監視エンジンを使用するには、オプション{useUnifiedTopology:true}をMongoClientコンストラクターに渡します。
  3. Collection.ensureIndexは非推奨です。代わりにcreateIndexesを使用してください。
  4. DeprecationWarning:Mongoose:useFindAndModifyオプションがfalseに設定されていないfindOneAndUpdate()およびfindOneAndDelete()は非推奨になりました。参照: https://mongoosejs.com/docs/deprecations.html#-findandmodify-

それが役に立てば幸い。

0
Richard Vergis

Mongoose connectの設定seUnifiedTopology:trueオプション

  import mongoose from 'mongoose';

        const server = '127.0.0.1:27017'; // REPLACE WITH YOUR DB SERVER
        const database = 'DBName'; // REPLACE WITH YOUR DB NAME
        class Database {
          constructor() {
            this._connect();
          }
          _connect() {
            mongoose.Promise = global.Promise;
            // * Local DB SERVER *
            mongoose
              .connect(`mongodb://${server}/${database}`, {
                useNewUrlParser: true,
                useCreateIndex: true,
                useUnifiedTopology: true
              })
              .then(
                () => console.log(`mongoose version: ${mongoose.version}`),
                console.log('Database connection successful'),
              )
              .catch(err => console.error('Database connection error', err));   
          }
        }
        module.exports = new Database();
0
Sanjay kumar
   const mongo = require('mongodb').MongoClient;

   mongo.connect(process.env.DATABASE,{useUnifiedTopology: true, 
   useNewUrlParser: true}, (err, db) => {
      if(err) {
    console.log('Database error: ' + err);
   } else {
    console.log('Successful database connection');
      auth(app, db)
      routes(app, db)

   app.listen(process.env.PORT || 3000, () => {
      console.log("Listening on port " + process.env.PORT);
    });  

}});

0
StarDrop9

他の依存関係にも関係している可能性があることをこのスレッドに追加したいと思います。

たとえば、NodeJS、MongoDB、またはMongooseに対して更新または設定したものは何も問題ではありませんでした-connect-mongodb-sessionが更新され、同じエラーが発生し始めました。この場合の解決策は、connect-mongodb-sessionのバージョンをバージョン2.3.0から2.2.0に単にロールバックすることでした。

enter image description here

0

私も同じ問題に直面していました:

  1. 端末で次のコマンドを実行して、mongoDBに接続していることを確認しました。

    brew services start [email protected]
    

    そして私は出力を得ました:

    Successfully started `mongodb-community`
    

Mongodbのインストール手順
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ または https://www.youtube.com/watch?v = IGIcrMTtjo

  1. 私の構成は次のとおりでした:

    mongoose.connect(config.mongo_uri, {
        useUnifiedTopology: true,
        useNewUrlParser: true})
        .then(() => console.log("Connected to Database"))
        .catch(err => console.error("An error has occured", err));
    

これは私の問題を解決しました!

0
Miguel Chiau