Lorsque j'exécute le code suivant, le message d'erreur suivant s'affiche: "MongoError: le pool d'instances du serveur a été détruit '. Une idée pourquoi ou comment résoudre ce problème?
var csv = require('./importer.js');
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var url = 'mongodb://.....';
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server.");
csv.foreach('data/airports.csv', function(airport){
db.collection('airports').insertOne(airport, function(err, result) {
if(err) {
console.log(err)
} else {
console.log("Inserted: " + airport.ident);
}
});
});
db.close();
});
csv.foreach
Et les appels insertOne
sont (probablement) tous les deux asynchrones. Vous appelez donc db.close()
avant la fin de vos insertions.
Vous devez trouver un moyen d'attendre pour appeler db.close()
jusqu'à ce que les rappels de toutes vos insertions aient été appelés. Cela dépend de la manière dont votre module csv fonctionne, mais utiliser quelque chose comme module asynchrone peut vous aider à contrôler le flux asynchrone.
J'ai le même problème, après avoir appelé 'db.close ()' avec async npm, ce problème est résolu.