如何关闭数据库连接?

时间:2015-01-01 22:40:20

标签: node.js mongodb

我遇到了一个问题,我在Node.js中编写了一个与MongoDB数据库交互的脚本,使用mongo.js作为连接器。

我的脚本基本上执行以下操作:

  1. 从mongoDB中读取一个集合,以获取一堆网址

  2. 转到每个网址,然后从该网页获取数据

  3. 对该数据执行一些计算,并将计算结果存储在同一个数据库中的不同集合中

  4. 我遇到的问题是,在读取了数据库中的所有URL并执行了所有计算,并且所有计算结果都存储在新集合中之后,我的脚本就会挂起,因为数据库连接从未已经关闭。我尝试了一百万种方法来做到这一点,但我总是提前关闭它,并且它不会读取其余的网址。如果有人可以请求帮助,那就太好了。提前谢谢!

    以下是一些供参考的代码(如果您需要更多信息,请告诉我们):

    db.results.drop(populateDB());
    
    function populateDB() {
        db.urls.find({'url':{$ne:''}}).forEach(function(err, doc) {
            if (doc) {
                calculateResults(doc['url'], function(test, result) {
                    db.results.save({
                        test: test,
                        result: result
                    },
                    function(err, saved) {
                        if (err || !saved) console.log('error on save: ' + err);
                    })
                });
            } else {
                if (err) console.log(err);
            }
        });
    }
    
    function calculateResults(url, test, saveRes) {
        ...
        ...
        result = ...;
        saveRes(test, result);
        ...
    }
    

0 个答案:

没有答案