2017-04-23 33 views
0

我正在使用Nodejs制作一个简单的任务应用程序。当用户进入主页时,我会将用户的任务发送到前端。每个“用户”都有一个任务标识的数组来排列他们的任务。当我尝试将每个任务推送到本地数组时,我只是继续获取​​一个空数组。如何使用猫鼬模型填充数组

User.findById(req.session.passport.user, function(err, user){ 

    if(err){ 
    console.log(err); 
    res.redirect("/login"); 

    } else { 

    var tasks = new Array(user.tasks.length); 

    for(var i = 0; i < user.tasks.length; i++){ 

     Task.findById(user.tasks[i] , function(err, task){ 
     if(err){ 
      console.log(err); 
     } 
     if(!tasks){ 
      console.log("Couldn't find the task: " + user.tasks[i]); 
     } else { 
      console.log("Found task: " + task); //Tasks are always found 
      tasks.push(task); //<=== Not pushing? 
     } 

     }); 
    } 
    console.log(tasks); // <====this is alwayse EMPTY 
    res.render("app-mobile", {user: user, tasks: tasks}); 

    } 

}); 
+0

的[我如何返回从一个异步调用的响应?(可能的复制http://stackoverflow.com/questions/14220321/how-do-i-return-the-response -from-一个异步呼叫) – Mikey

回答

0

您似乎在尝试查找给定ID数组的所有任务。你可以简单地做

Task.find({ _id: { $in: user.tasks }}, function (err, tasks) { 
    if (err) { 
     console.log(err); 
    } 
    if (!tasks){ 
     console.log("Couldn't find the tasks"); 
    } 
    console.log(tasks); 
    res.render("app-mobile", { user: user, tasks: tasks}); 
});