【问题标题】:Why is the MongoDB Node Driver generating instance pool destroyed errors?为什么MongoDB Node Driver生成实例池被破坏错误?
【发布时间】:2016-12-26 01:47:42
【问题描述】:

当我运行以下代码时,我收到错误消息“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();
});

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    csv.foreachinsertOne 调用(可能)都是异步的,因此您在插入完成之前调用 db.close()

    您需要想出一种等待调用db.close() 的方法,直到调用了所有插入的回调。如何做到这一点取决于您的 csv 模块的工作方式,但使用 async module 之类的东西可以帮助进行异步流控制。

    【讨论】:

      【解决方案2】:

      我也有同样的问题,在调用 'db.close()' 和 async npm 之后,这个问题就解决了。

      【讨论】:

        【解决方案3】:

        尝试使用for...of 而不是forEach。这解决了我的问题,虽然我使用的是 async/await。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-31
          • 2019-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-23
          • 2020-01-08
          • 2017-01-30
          相关资源
          最近更新 更多