Используйте Async Library с MongoDB, используя Nodejs - PullRequest
1 голос
/ 06 июня 2019

Когда я делаю вызов API, я хочу обновить 2 отдельные коллекции с MongoDB. Официальный способ это будет использовать транзакции, но поскольку это пока прототип, я буду использовать 2 отдельных вызова функций для обновления каждой коллекции.

Вот что я делаю:

 async.waterfall([
    function(callback) {
        callback(null);
    }, function(callback) {
       connectToDatabase(MONGODB_URI)
      .then(db => updateDocument1(arguments))
      .then(result => {
        callback(null);
      });
    }
    , function(callback) {
       connectToDatabase(MONGODB_URI)
      .then(db => updateDocument2(arguments))
      .then(result => {
        callback(null);
      });
    , function(err, result) {
       callback(null, null)
    }
  ])

Но почему-то не выполняется updateDocument2. Кроме того, updateDocument1 останавливается в середине процесса, поэтому ни один из документов не обновляется. Ты знаешь почему? А кто-нибудь знает лучший способ?

1 Ответ

1 голос
/ 06 июня 2019

асинхронная параллель: выполнение функции параллельно без зависимости от другая функция

асинхронный ряд: выполнение функции последовательно (один за другим)

асинхронный водопад: сначала выполнить функцию, а затем передать вывод первая функция как вход для следующей функции

теперь в вашем случае: если обновление двух коллекций не зависит друг от друга, вы можете использовать асинхронную параллель

...