Jag är 100% säker men så vitt jag kan se infogar du data synkront. Jag menar när du får en rad försöker du infoga den och väntar inte på resultatet. Försök med ett annat tillvägagångssätt:
- läs alla rader och lagra dem i en array
- börja infoga data rad för rad asynkront
Något sådant:
var lines = [];
var readAllLines = function(callback) {
// store every line inside lines array
// and call the callback at the end
callback();
}
var storeInDb = function(callback) {
if(lines.length === 0) {
callback();
return;
}
var line = lines.shift();
collection.insert(line, function (err, docs) {
storeInDb(callback);
});
}
mongoClient.open(function (err, mongoClient) {
console.log(err);
if (mongoClient) {
readAllLines(function() {
storeInDb(function() {
// lines are inserted
// close the db connection
})
});
}
});