原因次のスクリプト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との)第一ループは、それぞれが35件の結果を生成する40時間を実行して想像してみてください。 Mongo db に保存する40個のX 35レコードがmongodb Maxx接続に届きます。 ので、私は何を探していますは、次のとおりです。
は空の配列
var myarray = [] // ok
push each "details" to myarray
myarray.push(details)
を作成しかしnodeJSが非同期であるように私の問題があり、私はに保存するには、yループの終了を待つ必要があります。 db
どうすればmyarrayを保存関数に送る前にYループが終了するのを待つことができますか? 待機時間を補うことなく..?
私はあなたがPromise.allを使用することができます。..コールバック、任意の成功なしの約束を使用して
y = yがすでに数値であるため、Number(y)は不必要です... –