【发布时间】:2013-09-10 03:32:27
【问题描述】:
在许多使用 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 的新手。谢谢!
【问题讨论】:
-
也可以查看this,可能对你有帮助
-
有趣.... 是的,有帮助;非常感谢!