当我运行以下代码时,我收到错误消息“ 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.foreach并且insertOne调用(大概)都是异步的,因此您要db.close()在插入完成之前进行调用。
csv.foreach
insertOne
db.close()
您需要提出一种等待调用的方法,db.close()直到调用了所有插入的回调。具体方法取决于您的csv模块如何工作,但是使用async模块之类的方法可以帮助进行异步流控制。