最佳答案
在许多使用 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
只完成一次——而不是每次您需要去做一些与数据库相关的操作时。并且您将不断重用在初始 open\connect
期间返回的 db
对象,只是在最后使用 close
释放它,而实际上您已经完成了所有与数据库相关的工作。
显然,因为所有的 I/O 都是异步的,所以在发出 close
之前,您要确保最后一个数据库操作在发出 close
之前完成。看起来应该没问题,但我想再检查一下,以防我错过了一些东西,因为我是新的 MongoDB。谢谢!