当我运行以下代码时,我收到错误消息“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()
之前插入已完成。
您需要想出一种等待调用 db.close()
的方法,直到调用了所有插入的回调。如何做到这一点取决于你的 csv 模块是如何工作的,但是使用类似 async module 的东西。可以帮助进行异步流控制。
https://stackoverflow.com/questions/39029893/
相关文章:
node.js - 未找到匹配项的 Mongoose 查询返回什么?
node.js - 使用 2 个字段的 Mongoose 自定义验证
mongodb - Mongoose 是否支持 Mongodb `findAndModify` 方法
node.js - 使用 mongoose 在 mongodb 中设置集合的到期时间
linux - Errr 'mongo.js:L112 Error: couldn' t 连接到服务
python - 为什么 PyMongo 3 给出 ServerSelectionTimeoutEr
mongodb - 如何使用 Robomongo 连接到 MongoDB Atlas?
python - 让 Spark、Python 和 MongoDB 协同工作