Nodejs Mongodbは、1回のhttp呼び出しで複数のクエリを実行します

サイラス

次のコードが示すように、複数のクエリを実行するためのループを作成しました。

router.get('/getAverageClicks', async (req, res) => {
if(req.headers.token == process.env.API_TOKEN){
    let clicks = [];
    database.collection('locations').countDocuments().then(loccount => {
        for (var i = 0; i <= 10; i++) {
            var past = new Date();
            past.setDate(past.getDate() - i);
            var tpast = new Date();
            tpast.setDate(tpast.getDate() -1 -i)

            console.log(tpast);
            var query = { $and : [ {date: {$lte: past}},{date: {$gte: tpast}}]};
            collection.countDocuments(query).then(count => {
                console.log(count)
                clicks.push(count/loccount);
                if (clicks.length == 10){
                res.end(JSON.stringify(clicks.reverse()));
                res.status(200);
                }
            }); 
        }
    })

}else{
    res.end("Unauthorized")
    res.status(401)
}

});

現在の問題は、mongodbがデータを非同期に返すことです。つまり、別の行のデータを取得することがあります。私の質問は、同じ行で異なる日付の10個のクエリを実行して、毎回同じ配列を取得するにはどうすればよいかということです。または、すべての操作が完了するまで待機するようにループを改善するにはどうすればよいですか?

アントンク

for ofasync / awaitをサポートするループを使用して、応答を送信する前にすべてのクエリを待機できます次のようになります。

router.get('/getAverageClicks', async (req, res) => {
  if (req.headers.token == process.env.API_TOKEN) {
    const loccount = await database.collection('locations').countDocuments();
    let clicks = [];
    for (const i of [...new Array(11)].keys()) {
      var past = new Date();
      past.setDate(past.getDate() - i);
      var tpast = new Date();
      tpast.setDate(tpast.getDate() - 1 - i)

      console.log(tpast);
      var query = { $and: [{ date: { $lte: past } }, { date: { $gte: tpast } }] };
      const count = await collection.countDocuments(query);
      console.log(count)
      clicks.push(count / loccount);
    }
    res.end(JSON.stringify(clicks.reverse()));
    res.status(200);
  } else {
    res.end("Unauthorized")
    res.status(401)
  }
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

nodejs-関数内で複数の非同期呼び出しを実行するための最良の方法は?

分類Dev

Nodejs非同期mongodbfind()クエリ複数の呼び出し

分類Dev

nodejs非同期呼び出し、URLで複数のリクエストを処理する方法

分類Dev

nodejsで別のメソッドを呼び出す前に、n個の非同期関数を実行します

分類Dev

nodejsでの関数呼び出しの実行

分類Dev

Nodejsは複数のデータベース呼び出しを待ちます

分類Dev

nodejsを使用したforeachでの複数のhttppost呼び出し

分類Dev

postgresとnodejsを使用して、1つのステートメントで複数のクエリを実行します

分類Dev

Postgresは複数のクエリを約束します-nodejs

分類Dev

NodeJS Async - 一部が失敗しても、複数の http リクエストの実行を継続する

分類Dev

1回の呼び出しで複数のmysqlクエリを実行する

分類Dev

NodeJSで複数のhttp呼び出しを処理するための最良の方法

分類Dev

nodejsでの複数の待機中の呼び出しを高速化する

分類Dev

nodejs-mssqlを使用して複数のクエリを実行する

分類Dev

NodeJSリクエストでのAPIへのcURL呼び出し

分類Dev

共通のコールバックを使用してnodejsサーバーから複数のhttp呼び出しを行う方法は?

分類Dev

nodejsで呼び出し元から関数の実装を隠す方法

分類Dev

Nodejsは次の行を呼び出して行ごとに閉じますか?

分類Dev

nodejsリクエストモジュールでこのcurl呼び出しを行うにはどうすればよいですか?

分類Dev

NodeJSの同じ引数でコールバック関数内の親関数を呼び出します

分類Dev

Unirestを使用してNodejsでリクエスト以上のものを呼び出す方法

分類Dev

Nodejsへの非同期関数はrubyファイルを呼び出します

分類Dev

nodejsは、ループ内のすべてのMongoDB呼び出しが終了するまで待機します

分類Dev

Nodejsエラーで再帰呼び出しを行うと約束します

分類Dev

非同期呼び出し関数でのNodeJsエラー

分類Dev

nodejsのasync.each内で同期http呼び出しを行う方法

分類Dev

Nodejs-エラーコールバック時に関数を再呼び出しします-ノンブロッキングの方法はありますか?

分類Dev

AngularJS:httpチェーン呼び出しの問題とNodeJS:複数のhttp呼び出しでの変数の使用の問題

分類Dev

VB6-1回の呼び出しで複数のSQLクエリを実行する方法

Related 関連記事

  1. 1

    nodejs-関数内で複数の非同期呼び出しを実行するための最良の方法は?

  2. 2

    Nodejs非同期mongodbfind()クエリ複数の呼び出し

  3. 3

    nodejs非同期呼び出し、URLで複数のリクエストを処理する方法

  4. 4

    nodejsで別のメソッドを呼び出す前に、n個の非同期関数を実行します

  5. 5

    nodejsでの関数呼び出しの実行

  6. 6

    Nodejsは複数のデータベース呼び出しを待ちます

  7. 7

    nodejsを使用したforeachでの複数のhttppost呼び出し

  8. 8

    postgresとnodejsを使用して、1つのステートメントで複数のクエリを実行します

  9. 9

    Postgresは複数のクエリを約束します-nodejs

  10. 10

    NodeJS Async - 一部が失敗しても、複数の http リクエストの実行を継続する

  11. 11

    1回の呼び出しで複数のmysqlクエリを実行する

  12. 12

    NodeJSで複数のhttp呼び出しを処理するための最良の方法

  13. 13

    nodejsでの複数の待機中の呼び出しを高速化する

  14. 14

    nodejs-mssqlを使用して複数のクエリを実行する

  15. 15

    NodeJSリクエストでのAPIへのcURL呼び出し

  16. 16

    共通のコールバックを使用してnodejsサーバーから複数のhttp呼び出しを行う方法は?

  17. 17

    nodejsで呼び出し元から関数の実装を隠す方法

  18. 18

    Nodejsは次の行を呼び出して行ごとに閉じますか?

  19. 19

    nodejsリクエストモジュールでこのcurl呼び出しを行うにはどうすればよいですか?

  20. 20

    NodeJSの同じ引数でコールバック関数内の親関数を呼び出します

  21. 21

    Unirestを使用してNodejsでリクエスト以上のものを呼び出す方法

  22. 22

    Nodejsへの非同期関数はrubyファイルを呼び出します

  23. 23

    nodejsは、ループ内のすべてのMongoDB呼び出しが終了するまで待機します

  24. 24

    Nodejsエラーで再帰呼び出しを行うと約束します

  25. 25

    非同期呼び出し関数でのNodeJsエラー

  26. 26

    nodejsのasync.each内で同期http呼び出しを行う方法

  27. 27

    Nodejs-エラーコールバック時に関数を再呼び出しします-ノンブロッキングの方法はありますか?

  28. 28

    AngularJS:httpチェーン呼び出しの問題とNodeJS:複数のhttp呼び出しでの変数の使用の問題

  29. 29

    VB6-1回の呼び出しで複数のSQLクエリを実行する方法

ホットタグ

アーカイブ