I'm setting an array before a for loop, inside the for loop I use .push() to add data to the array but after this loop the array is empty.
MessageNotification.find({for: req.user.id}, (err, notifications) => {
    var userdata = [];
    notifications.forEach((notif) => {
        User.findById(notif.from, (err, user) => {
            userdata.push({
                id: user._id,
                username: user.username,
                thumbnail: user.thumbnail
            });
        });
    });
    console.log(userdata);
});
As you can see on the code I am running a mongoose query to find all notifications for a specific id, then, I am setting an array to get details about the sender of each notification. Inside a forEach loop I save the results in the array. Console.log on line 12 returns an empty array [] even though User.findById on line 4 gets the User data
 
     
    