sql >> データベース >  >> NoSQL >> MongoDB

module.exportsを通常とは異なる方法で使用する

    これには多くの問題があります。この概念は機能しません。

    手始めに、while(true) loopはイベントループをブロックするため、db 値を取得できないため、ループが完了しません。

    接続でのネットワーク操作が完了すると、イベントキューにイベントが追加され、それに関連付けられたコールバック(および解決されたpromise)は、イベントを処理できるように制御をイベントループに戻した場合にのみ実行できます。

    ただし、while(true) loopはイベントループをブロックするため、イベントを処理できません。 awaitを使用している場合を除きます ループ内(他のイベントの実行を許可する)では、node.jsでこのような待機ループを使用することはできません。無限ループを作成するだけです。

    トップレベルのawaitができるまで モジュールの初期化(現在作業中)で機能するため、非同期で取得した値を直接エクスポートすることはできません。

    代わりに、Promiseをエクスポートでき、呼び出し元はPromiseを使用してデータベースを取得する必要があります。または、promiseを返す関数をエクスポートします。

    これらの他の回答のビジーウェイトwhileループの問題に関する詳細情報:

    flag=trueになるまで待ちます

    javascript-このwhileループの何が問題になっていますか?無限ループ

    なぜwhileループはイベントループをブロックしますか?




    1. DigitalOceanでのMongoDBの実行

    2. ドキュメント内の別のフィールドの値でフィールドを更新します

    3. マングースの日付。現在の時刻は正確ではありません

    4. GolangBSON変換