Ho un processo cron che cancella un elenco di elementi su un sito Web e quindi inserisce o aggiorna i record in un database. Quando scrivo la pagina, voglio creare record per quelli nuovi che non sono stati ancora creati, altrimenti aggiorna quelli esistenti. Attualmente sto facendo qualcosa di simile:Sequenziare correttamente l'esecuzione di più crea + aggiornamenti
// 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!');
});
Questo sembra funzionare bene, ma non sono sicuro se sto facendo questo "correttamente" o no. Tutte le promesse che eseguono le interazioni DB devono essere eseguite in serie o è come le ho definite ok? C'è un modo migliore per fare questo genere di cose?
Grazie per la logica da solo. Lottando con questo. – Craicerjack