MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Schließen der Mongodb-Verbindung in node.js beim Einfügen vieler Daten

Ich bin mir 100% sicher, aber soweit ich sehen kann, fügen Sie Daten synchron ein. Ich meine, sobald Sie eine Zeile erhalten, versuchen Sie, sie einzufügen, und warten nicht auf das Ergebnis. Versuchen Sie es mit einem anderen Ansatz:

  • alle Zeilen lesen und in einem Array speichern
  • Beginnen Sie mit dem asynchronen Einfügen der Daten Zeile für Zeile

Etwas in der Art:

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