MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да попълните mongoose с голям набор от данни

i е вашият индекс към мястото, откъдето изтегляте входни данни в catalogArray , но също така се опитвате да го използвате, за да следите колко са запазени, което не е възможно. Опитайте да ги проследите отделно по следния начин:

var i = 0;
var saved = 0;
Catalog.remove({}, function(err){
    while(i < catalogArray.length){
        new Catalog(JSON.parse(catalogArray[i])).save(function(err, doc){
            saved++;
            if(err){
                console.log(err);
            } else {
                if(saved === catalogArray.length) {
                    return callback('database populated');
                }
            }
        });
        i++;
    }
});

АКТУАЛИЗАЦИЯ

Ако искате да добавите по-строг контрол на потока към процеса, можете да използвате async forEachLimit на модула функция за ограничаване на броя неизпълнени save операции към каквото посочите. Например, за да го ограничите до едно неизпълнено save в даден момент:

Catalog.remove({}, function(err){
    async.forEachLimit(catalogArray, 1, function (catalog, cb) {
        new Catalog(JSON.parse(catalog)).save(function (err, doc) {
            if (err) {
                console.log(err);
            }
            cb(err);
        });
    }, function (err) {
        callback('database populated');
    });
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изображението, върнато от REST API, винаги се показва неработещо

  2. mean.js менюто isPublic не работи

  3. mongoDB заявка WHERE _id> праг

  4. Групиране по интервали от дати

  5. Как да инсталирате Robomongo от файла tar.gz като програма в Ubuntu 15.10