在这么多使用MongoDB的介绍性示例中,您可以看到如下代码:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db)
{
/* Some operation... CRUD, etc. */
db.close();
});
如果MongoDB和其他任何数据库系统一样,那么open
和close
操作在时间上通常是昂贵的.
所以,我的问题是:当应用程序的其他部分调用它们时(并因此重用该db
值),只需执行一次MongoClient.connect("...
,将返回的db
值分配给某个全局模块,让模块中的各种函数执行各种与数据库相关的工作(将文档插入集合、更新文档等),就可以了吗,然后,当应用程序完成时,才执行close
.
换句话说,open
和close
只执行一次,而不是每次需要执行与数据库相关的操作时.你继续使用最初open\connect
年返回的db
对象,直到最后用close
处理掉它,当你真正完成所有与数据库相关的工作时.
显然,由于所有的I/O都是异步的,所以在发出close
之前,您应该确保最后一个数据库操作已经完成.看起来这应该没问题,但我想再次判断一下,以防因为我是MongoDB的新手而遗漏了什么.谢谢