在许多使用MongoDB的入门示例中,您将看到类似以下的代码:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
如果MongoDB像其他任何数据库系统一样,open
并且close
操作通常在时间上很昂贵。
所以,我的问题是这样的:只需执行MongoClient.connect("...
一次,将返回db
值分配给某个全局模块即可,该模块中具有各种功能就可以进行各种与数据库相关的工作(将文档插入集合,更新文档等)。 ),当它们被应用程序的其他部分调用(从而重新使用该db
值)时,然后,当应用程序完成时,才执行close
。
换句话说,open
而close
不是每次你需要去和做一些与数据库相关的操作-一旦完成。当您实际上完成所有与数据库相关的工作时,您将继续使用db
在初始期间返回的对象,而open\connect
仅在末尾使用来重用该对象close
。
显然,由于所有I / O都是异步的,因此在close
发出之前,请确保已完成最后一个数据库操作close
。似乎这样应该可以,但我想仔细检查一下,以防万一我刚接触MongoDB时遗漏了一些东西。谢谢!