Cuando ejecuto el siguiente código, recibo el mensaje de error " MongoError: el grupo de instancias del servidor fue destruido ". ¿Alguna idea de por qué o cómo solucionar esto?
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 y las llamadas insertOne son (presumiblemente) asíncronas, por lo que está llamando a db.close() antes de que se completen sus inserciones.
Debe idear una forma de esperar para llamar a db.close() hasta que se hayan llamado todas las devoluciones de llamada de sus inserciones. Cómo hacerlo depende de cómo funcione su módulo csv, pero usar algo como el módulo asíncrono puede ayudar con el control de flujo asíncrono.
Tengo el mismo problema, después de llamar a 'db.close()' junto con async npm, este problema se resuelve.
Intente usar for...of en lugar de forEach . Esto resolvió mi problema, aunque estoy usando async/await.