मेरे पास एक क्रॉन जॉब है जो किसी वेबसाइट पर आइटम्स की एक सूची स्क्रैप करता है और फिर डेटाबेस में रिकॉर्ड्स दर्ज करता है या अपडेट करता है। जब मैं पृष्ठ को स्क्रैप करता हूं, तो मैं उन नए लोगों के लिए रिकॉर्ड बनाना चाहता हूं जो अभी तक नहीं बनाए गए हैं, अन्यथा किसी भी मौजूदा अपडेट को अपडेट करें। वर्तमान में मैं कुछ इस तरह कर रहा हूँ:कई रचनाओं को सही ढंग से निष्पादित करने के लिए सीक्वेलिज़ करें + अपडेट
// pretend there is a "Widget" model defined
function createOrUpdateWidget(widgetConfig) {
return Widget.find(widgetConfig.id)
.then(function(widget) {
if (widget === null) {
return Widget.create(widgetConfig);
}
else {
widget.updateAttributes(widgetConfig);
}
});
}
function createOrUpdateWidgets(widgetConfigObjects) {
var promises = [];
widgetConfigObjects.forEach(function(widgetConfig) {
promises.push(createOrUpdateWidget(widgetConfig));
});
return Sequelize.Promise.all(promises);
}
createOrUpdateWidgets([...])
.done(function() {
console.log('Done!');
});
यह ठीक से काम करने लगता है, लेकिन मुझे यकीन है कि अगर मैं कर रहा हूँ इस "सही ढंग से" या नहीं नहीं कर रहा हूँ। डीबी इंटरैक्शन को करने वाले सभी वादों को क्रमशः चलाने की आवश्यकता है, या यह है कि मैंने उन्हें कैसे परिभाषित किया है ठीक है? क्या इस तरह की चीज करने का कोई बेहतर तरीका है?
अकेले तर्क के लिए धन्यवाद। इसके साथ संघर्ष। – Craicerjack