为什么MongoDB Node Driver生成实例池会破坏错误?

当我运行下面的代码时,我得到错误消息“ MongoError:服务器实例池被销毁 ”。 任何想法为什么或如何解决这个问题?

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.foreachinsertOne调用(可能是)都是asynchronous的,所以你在调用db.close()之前插入完成。

您需要想出一个等待调用db.close()直到所有的插入callback被调用。 如何做到这一点取决于你的csv模块如何工作,但使用像async模块可以帮助asynchronousstream量控制。