我有这个连接集:
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/