Tôi chắc chắn 100% nhưng theo như tôi thấy thì bạn đang chèn dữ liệu đồng bộ. Ý tôi là khi bạn nhận được một dòng, bạn cố gắng chèn nó vào và không đợi kết quả. Hãy thử sử dụng một cách tiếp cận khác:
- đọc tất cả các dòng và lưu trữ chúng trong một mảng
- bắt đầu chèn từng dòng dữ liệu một cách không đồng bộ
Đại loại vậy:
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
})
});
}
});