Jeg er 100% sikker, men så vidt jeg kan se, indsætter du data synkront. Jeg mener, når du først får en linje, prøver du at indsætte den og venter ikke på resultatet. Prøv at bruge en anden tilgang:
- læs alle linjerne og gem dem i et array
- begynd at indsætte data linje for linje asynkront
Sådan noget:
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
})
});
}
});