无法closures与Node.js的MongoDB连接?
看来,我不能closures与Node.js本地驱动程序的MongoDB连接。 当我运行node replica.js
脚本永远不会结束,因此连接不能由于某种原因closures。
这是代码。 这是一个副本集,但我不认为这是一个问题:
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实例工作得很好,连接closures,脚本结束, process.exit()
调用没有需要(由robertklepbuild议process.exit()
:
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(); });
事实certificate,这是一个bug,现在已经在1.3.6中修复了。 看看我前几天开的这个问题 。 有趣的是,这是我第一次与MongoDB …
在这种情况下,您可能需要强制连接池closures,通过将true
作为第一个参数close
。 您还应该提供callback,以便在closures时提醒您有任何问题:
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"); }); });