Node.js 네이티브 드라이버와 MongoDB 연결을 닫을 수없는 것 같습니다. node replica.js
을 실행하면 스크립트가 종료되지 않으므로 어떤 이유로 연결을 닫을 수 없습니다.Node.js로 MongoDB 연결을 닫을 수 없습니까?
다음은 코드입니다. 그것은 복제 세트입니다하지만 난 그게 문제가 있다고 생각하지 않는다 :
var mongodb = require('mongodb')
, Db = mongodb.Db
, Server = mongodb.Server
, ReplSet = mongodb.ReplSet;
// Replica set
var replSet = new ReplSet([
new Server('localhost', 27017), // Primary
new Server('localhost', 27018), // Secondary
new Server('localhost', 27016), // Secondary
],
{ rs_name: 'replica', read_secondary: true }
);
var db = new Db('test', replSet, { native_parser: true, w: 1 });
// Opening
db.open(function (err, db) {
if (err) console.error(err);
db.close();
});
하나의 mongod 인스턴스에 연결이 연결이 닫히지 잘 작동하고 스크립트가 process.exit()
의 (robertklep에 의해 제안) 필요없이 종료 전화 :
var mongodb = require('mongodb')
, Db = mongodb.Db
, Server = mongodb.Server;
// Single instance
var server = new Server('localhost', 27017):
var db = new Db('test', server, { native_parser: true, w: 1 });
// Opening
db.open(function (err, db) {
if (err) console.error(err);
db.close();
});
왜 두 번째 예제가 강제 실행되지 않고 작동하지만 복제본 집합과의 연결을 강제 종료해야합니까? – gremo
@Gremo 당신은 할 필요는 없지만 예기치 않은 일이 일어나고 있습니다. 콜백은 오류없이 호출됩니까? – JohnnyHK
전혀 오류가 없습니다. 'close (true) '를 사용해도 도움이되지 않습니다. 코드는 "close complete"를 인쇄하고 결코 스크립트를 종료하지 않습니다. 나는 CTRL + C를 눌러 닫아야한다. – gremo