programing

MongoDB 노드 드라이버가 인스턴스 풀을 생성하는 동안 오류가 발생하는 이유는 무엇입니까?

golfzon 2023. 6. 3. 13:17
반응형

MongoDB 노드 드라이버가 인스턴스 풀을 생성하는 동안 오류가 발생하는 이유는 무엇입니까?

다음 코드를 실행하면 'MongoError: server instance pool was destropped'라는 오류 메시지가 나타납니다.왜 또는 어떻게 이것을 고치는지 아십니까?

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 모듈이 작동하는 방식에 따라 다르지만 비동기 모듈과 같은 것을 사용하면 비동기 흐름 제어에 도움이 될 수 있습니다.

저도 같은 문제가 있는데, 'db.close()'를 asyncpm과 함께 호출하면 이 문제가 해결됩니다.

사용해 보십시오.for...of대신에forEach비동기/대기를 사용하고 있지만 이것으로 문제가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/39029893/why-is-the-mongodb-node-driver-generating-instance-pool-destroyed-errors

반응형