i
आपकी अनुक्रमणिका है जहां से आप catalogArray
. में इनपुट डेटा खींच रहे हैं , लेकिन आप इसका उपयोग यह ट्रैक करने के लिए भी कर रहे हैं कि कितने सहेजे गए हैं जो संभव नहीं है। उन्हें इस तरह अलग से ट्रैक करने का प्रयास करें:
var i = 0;
var saved = 0;
Catalog.remove({}, function(err){
while(i < catalogArray.length){
new Catalog(JSON.parse(catalogArray[i])).save(function(err, doc){
saved++;
if(err){
console.log(err);
} else {
if(saved === catalogArray.length) {
return callback('database populated');
}
}
});
i++;
}
});
अपडेट करें
यदि आप प्रक्रिया में सख्त प्रवाह नियंत्रण जोड़ना चाहते हैं, तो आप async
. का उपयोग कर सकते हैं मॉड्यूल का forEachLimit
बकाया save
. की संख्या को सीमित करने के लिए कार्य जो कुछ भी आप निर्दिष्ट करते हैं उसके लिए संचालन। उदाहरण के लिए, इसे एक बकाया save
. तक सीमित करने के लिए एक समय में:
Catalog.remove({}, function(err){
async.forEachLimit(catalogArray, 1, function (catalog, cb) {
new Catalog(JSON.parse(catalog)).save(function (err, doc) {
if (err) {
console.log(err);
}
cb(err);
});
}, function (err) {
callback('database populated');
});
}