1

我有这个连接集:

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(至少根据 mongod 日志),似乎连接就打开了。

4

1 回答 1

2

Mongoskin 与其他实现一样,会做一些“有趣的事情”来掩盖实际上应该在回调中完成的初始连接。所以你真的应该等待“打开”完成,但实际过程是“隐藏”的,因为在建立连接之前保持其他操作。

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

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 );
});

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

于 2014-08-07T10:08:30.273 回答