i
is uw index waar u invoergegevens vandaan haalt in catalogArray
, maar je probeert het ook te gebruiken om bij te houden hoeveel er zijn opgeslagen, wat niet mogelijk is. Probeer ze afzonderlijk als volgt te volgen:
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++;
}
});
UPDATE
Als u een strakkere stroomregeling aan het proces wilt toevoegen, kunt u de async
. gebruiken module's forEachLimit
functie om het aantal openstaande save
te beperken bewerkingen naar wat u opgeeft. Om het bijvoorbeeld te beperken tot één openstaande save
tegelijk:
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');
});
}