जैसा कि आपने नोट किया है, निम्नलिखित का उपयोग करने से दस्तावेज़ वापस नहीं आएगा:
Data.find(query).remove().exec(function(err, data) {
// data will equal the number of docs removed, not the document itself
}
जैसे, आप दस्तावेज़ को ActionCtrl
. में सहेज नहीं सकते हैं इस दृष्टिकोण का उपयोग करना।
आप अपने मूल दृष्टिकोण का उपयोग करके एक ही परिणाम प्राप्त कर सकते हैं, या किसी प्रकार के पुनरावृत्ति का उपयोग कर सकते हैं। एक नियंत्रण प्रवाह पुस्तकालय जैसे async एसिंक्स कॉल्स को संभालने के लिए काम आ सकता है। यह आपके कोड को कम नहीं करेगा, लेकिन प्रश्नों को कम करेगा। उदाहरण देखें:
Data.find(query, function(err, data) {
async.each(data, function(dataItem, callback) {
dataItem.remove(function(err, result) {
ActionCtrl.saveRemove(result, callback);
});
});
});
यह उत्तर मानता है कि ActionCtrl.saveRemove()
कार्यान्वयन एक पैरामीटर के रूप में एक व्यक्तिगत दस्तावेज़ ले सकता है, और async.each
से कॉलबैक निष्पादित कर सकता है फंदा। async.each
प्रत्येक पुनरावृत्ति के अंत में तर्क के बिना चलने के लिए कॉलबैक की आवश्यकता होती है, इसलिए आप आदर्श रूप से इसे .saveRemove()
के अंत में चलाएंगे।
ध्यान दें कि remove
एक व्यक्तिगत दस्तावेज़ पर विधि वास्तव में उस दस्तावेज़ को वापस कर देगी जिसे हटा दिया गया है।