sql >> Base de Datos >  >> NoSQL >> MongoDB

cerrando la conexión mongodb en node.js al insertar muchos datos

Estoy 100% seguro, pero por lo que puedo ver, está insertando datos sincrónicos. Quiero decir, una vez que obtienes una línea, intentas insertarla y no esperas el resultado. Intenta usar otro enfoque:

  • leer todas las líneas y almacenarlas en una matriz
  • empezar a insertar los datos línea por línea de forma asíncrona

Algo así:

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