似乎我无法使用Node.js本机驱动程序关闭MongoDB连接。当我运行node replica.js
时,脚本永远不会结束,因此由于某种原因无法关闭连接。
这是代码。这是一个副本集,但我不认为这是一个问题:
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实例工作得很好,连接关闭并且脚本结束,而{charnts ::p}}调用不需要(由robertklep建议):
process.exit()
答案 0 :(得分:6)
事实证明这是一个错误,现在已在1.3.6中修复。几天前看this issue I opened。有趣的是,这是我第一次使用MongoDB ......
答案 1 :(得分:0)
在这种情况下,您可能需要通过将true
作为第一个参数传递给close
来强制关闭连接池。您还应该提供回调,以便在尝试关闭时收到任何问题的警报:
db.open(function (err, db) {
if (err) console.error(err);
db.close(true, function (err) {
if (err) console.error(err);
else console.log("close complete");
});
});