[解決済み] DeprecationWarning: collection.findAndModify は非推奨です。代わりに findOneAndUpdate, findOneAndReplace, findOneAndDelete を使ってください。
質問
mongooseを使っています。
findOneAndUpdate
を使用していますが、まだエラーが発生します。
DeprecationWarning: collection.findAndModify は非推奨です。代わりにfindOneAndUpdate, findOneAndReplace, findOneAndDeleteを使ってください。
しかし、私は
findAndModify
を使用していないのに、なぜ私のクエリを
findAndModify
?
どのように解決するのですか?
クエリでオプションを設定する必要があります。
useFindAndModify
から
false
で述べたように
ドキュメント
.
(検索キーワード 現在サポートされているオプションは )
'useFindAndModify': デフォルトではtrue。falseに設定すると findOneAndUpdate() および findOneAndRemove() が findAndModify() ではなく、ネイティブの findOneAndUpdate() を使用するようにするには false を設定します。 findOneAndUpdate() と findOneAndRemove() を findAndModify() ではなく、ネイティブの findOneAndUpdate() を使うようにします。
で、mongooseの定義ファイルを見ると、findAndModify updateコマンドを呼び出すことが書かれています。
/**
* Issues a mongodb findAndModify update command.
* Finds a matching document, updates it according to the update arg,
passing any options,
* and returns the found document (if any) to the callback. The query
executes immediately
* if callback is passed else a Query object is returned.
*/
findOneAndUpdate(): DocumentQuery<T | null, T>;
最近 mongoose ドキュメントで更新された ( ここをクリック ) で、これらの非推奨について言及されています。
Mongoose の findOneAndUpdate() は MongoDB ドライバの 関数を使うようになってからだいぶ経つので、MongoDB ドライバの findAndModify() 関数を使います。
の使用を回避する方法は3つ以上あります。
FindAndModify
:
- Globalレベルで。オプションを false に設定します。
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- 接続レベル:接続オプションを使用して設定することができます。
mongoose.connect(uri, { useFindAndModify: false });
- クエリレベルで
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み] S3 Bucket に何かを送信しようとすると、AWS Missing credentials が表示される (Node.js)
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み】Mongoose: findOneAndUpdateが更新されたドキュメントを返さない
-
[解決済み】DeprecationWarning: スクリプトを別のサーバに移動すると、セキュリティとユーザビリティの問題でBuffer()が非推奨になる。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 再インストールを繰り返しても、npm run でモジュール 'sass' が見つからない。
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】npx コマンドが見つかりません。
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] S3 Bucket に何かを送信しようとすると、AWS Missing credentials が表示される (Node.js)
-
[解決済み] Express.js req.bodyが未定義です。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?