指定されたコードでは、ループ内の複数の MongoDB クエリからデータを取得し、結果を組み立てようとします。単一のデータ配列に変換されます。ただし、このデータを応答として返そうとすると問題が発生します。
この問題は、MongoDB クエリの非同期の性質に起因します。クエリが実行されると、関数は結果をすぐに返すのではなく、タスクを開始してすぐに返します。これが、集計結果を保存することを目的とした FinalData が未定義として返される理由です。関数はクエリが完了してデータを収集する前に終了します。
この問題を解決するには、次のようにします。 Promise を活用する必要があります。Promise は、非同期タスクのフローを処理するための構造化された方法を提供することで、非同期プログラミングを容易にします。 Promise を使用すると、非同期タスクの完了時に実行する関数を定義できます。
Promise を実装するには:
これらの概念を念頭に置いて、変更された getPrayerInCat 関数は次のようになります。
以上がMongoDB のループ内で非同期データ取得を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。