想象下面的脚本循环的NodeJS和MongoDB保存引起MongoDB的最大连接
var startPage = 1
var endPage = 40
for (y = startPage; y < endPage ; y++) {
var y = Number(y)
var search = getresult.from.Myapiforexample
search.run().then(function (data) {
//////////////////
/// This will generate 35 results//
var myresult = data.results
for (i = 0; i < myresult.length; i++) {
data.results[i].getDetails().then(function (details) {
savetodb(details)
}, function (err) {
console.error(err);
});
}
}, function (err) {
console.error(err);
});
}
function savetodb(json) {
var getsession = function(db, callback) {
var collection = db.collection('thebase');
collection.insert(data, function (err, docs) {
callback(docs);
db.close();
});
};
MongoClient.connect(url, function(err, db) {
getsession(db, function(docs) {
console.log("Recording ok")
});
});
}
的第一环(带Y)跑40时谁每个产生35笔。 因此,我将有40 X 35记录保存到Mongo db ,这将达到我的MongoDB Maxx连接。 那么我现在希望做的是:
创建一个空数组
var myarray = [] // ok
push each "details" to myarray
myarray.push(details)
但我的问题是因为是的NodeJS异步的,我需要等待Ÿ循环结束保存到db
因此,如何在发送myarray到保存函数之前等待Y循环完成。 没有实现等待时间..?
我使用回调试过,保证没有任何成功..
y = Number(y)是不必要的,因为y已经是一个数字...... –