看來我不能使用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
@格雷莫你不應該需要,但意想不到的事情正在發生。回調被調用時是否沒有錯誤? – JohnnyHK
完全沒有錯誤。即使使用'close(true)'也沒有幫助。你的代碼打印出「close complete」,並且它永遠不會退出腳本。我需要用'CTRL + C'強制關閉。 – gremo