[解決済み] サーバ発見・監視エンジンは非推奨です。
質問
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にダウングレードしたら、私のプロジェクトは正常に動作するようになりました。今のところ、ダウングレードして、新しいバージョンに更新される修正を待つしかないようです。
関連
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] テスト
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント