MongoDB
 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() на събрани обещания за връщане на "един голям резултат". Но също така ще трябва да превключите към promised-mongo от mongojs , като най-близкия еквивалент, тъй като има повече 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("");
})

Не е точно същото нещо, тъй като това е един списък, а не три, но въпросът е, че Promise обектите се отлагат, докато действително бъдат извикани за разрешаване, така че можете да подадете параметрите в цикъла, но да изпълните по-късно.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose не чете от вторичната база данни Mongo

  2. MongoDB $avg Оператор на конвейер за агрегиране

  3. Как да премахнете дублирани стойности в списък в mongodb

  4. Мързеливо зареждане в MongoDB с NoRM

  5. Mongoose populate връща празен масив