在nodejs任务完成后何时终止数据库连接?

时间:2016-02-03 08:50:14

标签: node.js mongodb mongoose

我在服务器端运行nodejs downloadData.js以进行多次嵌套异步调用,以便将数据保存到mongodb。

但是,我想在作业完成后终止数据库连接。但是我应该在哪里使用mongoose.connection.close()

如果我打开连接,命令将不会在提示符中返回并永久挂起。因此我考虑在回调函数中终止数据库连接,但不能保证哪个回调是最后一个。

downloadData.js中的伪代码如下:

//let's make 20 times async call;
var request = require('request'),
    mongoose = require('mongoose'),
    index = 0;
mongoose.connect(dbURL);

var makeAsyncCall = function() {    
        index++;
        request(dataToSave, function(err, response, body) {
        saveDataToMongoDB();
        if(index<20)
          makeAsyncCall();
        }   
    }

 makeAsyncCall();

2 个答案:

答案 0 :(得分:1)

试试这个

 var request = require('request'),
        mongoose = require('mongoose'),
        index = 0,
        max =20;
    mongoose.connect(dbURL);

    var makeAsyncCall = function() {    
            index++;
            request(dataToSave, function(err, response, body) {
               saveDataToMongoDB(index);
               if(index<max)
                  makeAsyncCall();
           }  
        }

在saveDataToMongoDB(i)

检查是否&#39; i&#39;是(max-1)然后在saveDataToMongoDB函数中关闭连接

答案 1 :(得分:0)

根据我的理解,你可以做一件事。在saveDataToMongoDB()中为mongo创建连接,当插入数据时关闭回调中的连接,这将解决您的问题。