Оптимальный шаблон проектирования для нескольких интеграций

#node.js #express #salesforce

#node.js #экспресс #salesforce

Вопрос:

У меня есть Node Express API, который действует как брокер. Он отвечает за синхронизацию данных между несколькими системами.

В хронологическом порядке…должно произойти следующее (и я запускаю это с node-cron )

  1. Express API загружает данные из ERP и отправляет их в свой собственный экземпляр Mongo a. Некоторые операции выполняются здесь с помощью Mongo

  2. Затем Express API должен загрузить данные из Salesforce (а также выполнить их обновление в своей собственной базе данных) b. Выполняются дополнительные вычисления

  3. Экспресс-API отправляет запрос на массовое обновление API в систему Salesforce

  4. Express API отправляет запрос на массовое обновление API в систему Salesforce

Как вы можете видеть, это беспорядочно, и многое может пойти не так, если одна часть сломается. В настоящее время я вызываю каждое задание с интервалом в несколько минут друг от друга, чтобы убедиться, что загрузка / обработка всех данных завершена. Какой лучший способ сделать это? Продолжить, только если установлено какое-либо поле?

Комментарии:

1. Почему бы не дождаться каждого шага, прежде чем продолжить. Если некоторые из них могут выполняться параллельно, вы можете await Promise.all([prom1, prom2]) , прежде чем двигаться дальше…

2. Мм … Я не использовал Promise.all так часто, но я всегда представлял, что его вариант использования будет для чего-то вроде массовых запросов к БД. При этом, я полагаю, он мог бы работать для взаимодействия с несколькими независимыми API через сеть

3. Я хотел просто заставить задание b дождаться завершения задания a (где задание b зависит от задания a). Я только что добавил, что там, где задание c зависит от a и b, но a и b не зависят друг от друга, вы можете использовать Promise.all , чтобы дождаться завершения их обоих перед выполнением c