我在服务器端运行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();
答案 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创建连接,当插入数据时关闭回调中的连接,这将解决您的问题。