保持打开一个MongoDB数据库连接
在使用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("...
一次,将返回的值赋给某个模块全局,模块中的各种function执行各种数据库相关的工作(将文档插入集合,更新文档等等),当它们被应用程序的其他部分调用时(并因此重新使用该db
值),然后,当应用程序完成时,只有这样才能close
。
换句话说, open
和close
只需要一次 – 并不是每次你需要去做一些与数据库相关的操作。 而且,在最初open\connect
时返回的db
对象是重复使用的,只有在实际完成所有与数据库相关的工作时,才可以在最后处理它。
很明显,因为所有的I / O都是asynchronous的,所以在close
之前你要确保最后的数据库操作在完成之前完成。 似乎这应该是好的,但我想仔细检查,以防万一我缺less的东西,因为我是新来的MongoDB。 谢谢!
是的,这是很好的和典型的行为。 启动你的应用程序,连接到数据库,对数据库进行很长一段时间的操作,也许重新连接,如果连接意外死亡,然后只是从来没有closures连接(只要依靠你的进程死亡时发生的自动closures) 。