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

JavaScriptでループが終了した後にステートメントを実行するにはどうすればよいですか?

    async.whilstを参照してください forのフロー制御が必要です ループ。これにより、各ループの反復を制御するためのコールバックが提供されます。

    var temphtml = "",
        j = 0;
    
    async.whilst(
      function() { return j < 3 },
      function(callback) {
        db.austinsroom.find({"y": j }, {}).sort({"x": 1}, function(err, records) 
          temphtml += records.map(function(el) {
              return el.display;
          }).join("") + '<br>';
          j++;
          callback(err);
        });
      },
      function(err) {
         if (err) throw err;
         console.log(temphtml);
      }
    )
    

    それか、 Promise.all() 収集された約束については、「1つの大きな結果」を返します。ただし、 promised-mongoに切り替える必要もあります。 mongojsから 、最も近い同等物として、実際にpromiseをサポートするmongodbドライバーが多いため。これは、mongojsからの直接フォークです。 :

    var temphtml = "",
        j = 0,
        promises = [];
    
    for ( var j=0; j < 3; j++ ) {
       promises.push(db.austinsroom.find({"y": j }, {}).sort({"x": 1}).toArray());
       promises.push('<br>');   // this will just join in the output
    )
    
    Promise.all(promises).then(function(records) {
        temphtml += records.map(function(el) {
            return el.display;
        }).join("");
    })
    

    これは3つではなく1つのリスト出力であるため、まったく同じではありませんが、要点はPromise オブジェクトは、実際に解決のために呼び出されるまで延期されるため、ループ内のパラメーターをフィードできますが、後で実行できます。



    1. 空間データベースを使用して、ポイントを含むポリゴンを検​​索する

    2. Mongodb Aggregate Nested Group

    3. 変数$tid、$ idをraw関数に渡す方法は?

    4. Spring Data MongoDBで楽観的ロックを使用するにはどうすればよいですか?