看来我不能使用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