javascript - 为什么在 MongoDB 中显式 .open() 一个连接?

标签 javascript node.js mongodb mongoskin

我有这个连接集:

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

Q) 为什么我可以/应该显式open() 连接,因为连接似乎在我尝试查询集合时立即打开?

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

最佳答案

与其他实现一样,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 );
});

但是对于您的代码来说,一般来说它应该没有什么不同。

关于javascript - 为什么在 MongoDB 中显式 .open() 一个连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179337/

相关文章:

javascript - 如何在 Opera 的弹出窗口中添加 onload 事件监听器

encryption - 使用 RSA 技术在 JavaScript 中加密字符串并在 PHP 中解密

javascript - 在 typescript 中导入/导出变量的最佳方法是什么?

javascript - MongoDB删除触发器查询

javascript - 如何获取列表中卡片的 ID 或索引?

javascript - 显示数组中文本的随机值

javascript - 要转移正在运行的 Node 项目,我需要了解什么?

带有 zlib 库的 Node.js 请求

node.js - $addToSet 并返回所有添加的新项目?

javascript - 如何等到在nodejs中执行流异步