Node.js 如何使用mongoose模型填充数组

Node.js 如何使用mongoose模型填充数组,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在使用Nodejs制作一个简单的任务应用程序。当用户进入主页时,我会将用户的任务发送到前端。每个“用户”都有一个任务ID数组,用来区分哪个任务是他们的。当我尝试将每个任务推出到本地数组时,我总是得到一个空数组 User.findById(req.session.passport.user, function(err, user){ if(err){ console.log(err); res.redirect("/login"); } else { va

我正在使用Nodejs制作一个简单的任务应用程序。当用户进入主页时,我会将用户的任务发送到前端。每个“用户”都有一个任务ID数组,用来区分哪个任务是他们的。当我尝试将每个任务推出到本地数组时,我总是得到一个空数组

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});

  }

});
User.findById(req.session.passport.User,函数(err,User){
如果(错误){
控制台日志(err);
res.redirect(“/login”);
}否则{
var tasks=新数组(user.tasks.length);
对于(var i=0;itasks.push(task);//您似乎在尝试查找给定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});
});
可能重复的