1. ホーム
  2. javascript

[解決済み] サーバ発見・監視エンジンは非推奨です。

2022-02-10 05:40:28

質問

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: 現在の Server Discovery and Monitoring エンジンは非推奨であり、将来のバージョンで削除されます。新しい Server Discover and Monitoring エンジンを使うには、 MongoClient コンストラクタにオプション { useUnifiedTopology: true } を渡します。

何が問題なのでしょうか?私は useUnifiedTopology が、コンソールに表示されるようになりました。コンフィグに追加したのですが、まだこの警告が出ます。私は MongoClient .

編集

Felipe Pletsが回答したように、Mongooseに問題があり、バージョンアップでこのバグが修正されました。だから、マングースのバージョンを更新すれば、この問題を解決できます。

解決方法は?

更新情報

Mongoose 5.7.1 がリリースされ、この問題が修正されたようです。 useUnifiedTopology オプションは期待通りに動作します。

mongoose.connect(mongoConnectionString, {useNewUrlParser: true, useUnifiedTopology: true});

オリジナルの回答

私は同じ問題に直面していたので、マングースのコードを深く掘り下げてみることにしました。 https://github.com/Automattic/mongoose/search?q=useUnifiedTopology&unscoped_q=useUnifiedTopology

Mongoose のバージョン 5.7 で追加されたオプションのようですが、まだあまりドキュメント化されていないようです。ライブラリの歴史にも記載がありませんでした。 https://github.com/Automattic/mongoose/blob/master/History.md

コード内のコメントによると

  • パラメータ {Boolean} [options.useUnifiedTopology=false] デフォルトではFalseです。に設定する。 true を指定すると、MongoDB ドライバのレプリカセットとシャードクラスタの監視エンジンにオプトインします。

また、このエラーについては、プロジェクトのGitHubにissueが存在します。 https://github.com/Automattic/mongoose/issues/8156

私の場合、レプリカセットやシャーデッドクラスターでMongooseを使っていないので、このオプションはfalseにすべきなのでしょうが。しかし、falseにするとtrueであるべきだと文句を言われます。私のデータベースはレプリカセットやシャーデッドクラスターで動いていないためでしょう。

5.6.13にダウングレードしたら、私のプロジェクトは正常に動作するようになりました。今のところ、ダウングレードして、新しいバージョンに更新される修正を待つしかないようです。