为什么在MongoDB中显式.open()连接?

我有这个连接集:

var db = mongo.db('mongodb://localhost/inline_dev', {native_parser:true}); 

然后我打开一个连接,并获取一些文件…

 db.open(function(err, db) db.collection('test').find().toArray(function(err, dbDocs) { if (!err) { console.log(dbDocs) } }); 

…但是,这似乎也工作,没有明确的.open()

 db.collection('test').find().toArray(function(err, dbDocs) { if (!err) { console.log(dbDocs) } }); 

问)为什么我/我应该明确地open()连接,因为它似乎连接打开,只要我试图查询集合无论如何?

实际上,只要我将浏览器指向应用程序的URL(至less根据mongod日志),连接就会被打开。

像其他实现一样,Mongoskin做一些“有趣的东西”来掩盖一个初始连接,应该在callback中实际完成。 所以你真的应该等待“开放”来完成,但实际的过程是通过保持其他操作直到build立连接而“隐藏”的。

一个很好的方式来说明它从代码中检查对象:

 var mongo = require('mongoskin'); var db = mongo.db("mongodb://localhost/test"); console.log( "Before" ); console.log( db ); db.open(function(err,conn) { console.log( "After" ); console.log( conn ); console.log( "And DB:" ); console.log( db ); }); 

但是对于一般的代码来说,它不应该有所作为。