MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

fechando a conexão mongodb em node.js ao inserir muitos dados


Tenho 100% de certeza, mas até onde posso ver você está inserindo dados síncronos. Quero dizer, uma vez que você obtém uma linha, você tenta inseri-la e não espera pelo resultado. Tente usar outra abordagem:
  • ler todas as linhas e armazená-las em um array
  • começar a inserir os dados linha por linha de forma assíncrona

Algo parecido:
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
            })
        });
    }
});