2017-04-23 4 views
0

Ich mache eine einfache Aufgabe App mit Nodejs. Wenn der Benutzer die Startseite aufruft, sende ich die Aufgaben des Benutzers an das Frontend. Jeder "Benutzer" hat ein Array von Aufgaben-IDs, um herauszufinden, welche Aufgabe ihnen gehört. Ich bekomme immer ein leeres Array, wenn ich versuche, jede Aufgabe auf das lokale Array zu übertragen.So füllen Sie ein Array mit Mungo-Modellen

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

Mögliches Duplikat einfach tun [Wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response Von einem asynchronen Anruf – Mikey

Antwort

0

Sie scheinen zu versuchen, alle Aufgaben mit einem Array von IDs zu finden. Sie können

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