疑是坑~用mongodb原生驱动,关于关闭数据库连接的问题
发布于 1年前 作者 wuliao49 1613 次浏览

如题,我用require(‘mongodb’).MongoClient.connect这种形式来获得一个DB连接,要去若干个表中插入若干条记录(具体数量不定,运行时才知道)。 插入每张表采用如下形式: db.collection('xxx’, function(err, collection) { //插入数据 collection.insert(data, {safe : false}, function(err, result) { //db.close(); }); }); 现在的问题在于,我什么时候来关闭数据库链接呢? 难不成我要在每个插入成功的回调里面都搞一个事件触发,监听到每个插入都成功后再关闭数据库连接吗? 而且,我只有运行的时候才知道插入的次数… 感觉无解啊,是我理解有问题,还是本身就是坑啊?

---------交代下背景-------- 1 我这个程序不是常驻应用也不是web服务,必须手动显示的关闭连接,程序才会正常退出。 2 其他的驱动我试过,确有自动关闭功能的,但是有种种限制不适合我这种情况。 3 论坛里面有朋友提到genic-pool(凭印象拼写,很可能单词拼写有误),这个应该可能解决问题,但是我这个地方暂用不到连接池,想用原生驱动试试。

6 回复

对于单线程的node 而言…你为什么要关闭数据库呢?

常驻应用可以不用关,问题我这个不是常驻的。 不关闭数据库连接,程序根本不会正常退出。

官方推荐的 写法 是 var collection = db.collection(‘xxxx’); collection.insert({});

是不需要关闭连接的

你可以 把插入的 数据放在一个数组里面 在插入的 回掉 里面 插入下一个 最后一个 插入完成后 关闭连接

多谢。但是我看的资料中说明是要手动关闭的。 这个说法可否给个链接?

如果是一个表就好了,可以递归。 问题是现在有若干张表,动态的,没办法这么做

回到顶部