2015-07-31 4 views
0

js mongoose and async. Мне нужна помощь в определении завершения задачи, чтобы я мог отобразить html-страницу. Запрос mongoose и async выполняют задачу. Я проверил код и базу данных, обновленные правильно, как я хотел. Тем не менее, я не уверен, где сделать страницу, потому что я не знаю, когда код завершит задачу. Надеюсь, кто-то может дать мне ответ! СпасибоNode.js mongoose and async

router.get('/initialize', function (req, res, next) { 
    if (req.session.passport.user.accountType == "Admin" || 
     req.session.passport.user.accountType == "Manager") { 
     var date = new Date(); 
     var requestDate = null; 
     if (date.getMonth() + 1 < 10) { 
      requestDate = new Date(date.getFullYear() + '-0' + (date.getMonth() + 1) + '-' + date.getDate()); 
     } else { 
      requestDate = new Date(date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()); 
     } 

     var i = 0; 
     Relationship.find({manager : { $ne: null }}, function (err, manageRelationshipObject) { 
      async.each(manageRelationshipObject, function (relationshipData, callback) { 
       Relationship.find({username : relationshipData.username, customerID : { $ne: null }}, function (err, customRelationshipObject) { 
        async.each(customRelationshipObject, function (data, callback) { 
         var managerObject = relationshipData.manager; 
         var workerObject = data.username; 
         var customerObject = data.customerID; 
         i++; 
         Entry.findOneAndUpdate({ 
          recordDate: requestDate, 
          customerID: customerObject, 
          workerID: workerObject, 
          managerID: managerObject 
         }, { 
          recordDate: requestDate, 
          customerID: customerObject, 
          workerID: workerObject, 
          managerID: managerObject 
         }, {upsert: true}, function (err, object) { 
          if (err) { 
           return res.send(err); 
          } 

         }); 


        }); 

       }); 
      }); 
     }); 

    } 
}); 

ответ

0

async.each принимает 3 параметра.

  • 1-й является массивом (manageRelationshipObject) √
  • 2-я функция итератора вы хотите применить на этом массиве (Relationship.find) √
  • 3-й является окончательной функция обратного вызова, после того, как все закончили.() x

Похоже, вам просто нужно добавить третий параметр, и вы настроены.

Heres более подробная документация: https://github.com/caolan/async

+0

Спасибо за ваше объяснение, Shall вы обновляете точный ответ на приведенном выше примере это будет полезно для других тоже. –