i
ist Ihr Index, aus dem Sie Eingabedaten in catalogArray
ziehen , aber Sie versuchen damit auch zu verfolgen, wie viele gespeichert wurden, was nicht möglich ist. Versuchen Sie, sie wie folgt separat zu verfolgen:
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++;
}
});
AKTUALISIEREN
Wenn Sie dem Prozess eine strengere Flusskontrolle hinzufügen möchten, können Sie async
verwenden forEachLimit
des Moduls
Funktion, um die Anzahl der ausstehenden save
zu begrenzen Operationen auf das, was Sie angeben. Zum Beispiel, um es auf ein ausstehendes save
zu beschränken gleichzeitig:
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');
});
}