MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

fermeture de la connexion mongodb dans node.js lors de l'insertion de beaucoup de données

Je suis sûr à 100%, mais pour autant que je sache, vous insérez des données synchrones. Je veux dire une fois que vous obtenez une ligne, vous essayez de l'insérer et n'attendez pas le résultat. Essayez d'utiliser une autre approche :

  • lire toutes les lignes et les stocker dans un tableau
  • commencer à insérer les données ligne par ligne de manière asynchrone

Quelque chose comme ça :

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