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');
});
}