我遇到了一个问题,我在Node.js中编写了一个与MongoDB数据库交互的脚本,使用mongo.js作为连接器。
我的脚本基本上执行以下操作:
从mongoDB中读取一个集合,以获取一堆网址
转到每个网址,然后从该网页获取数据
对该数据执行一些计算,并将计算结果存储在同一个数据库中的不同集合中
我遇到的问题是,在读取了数据库中的所有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);
...
}