el mayor problema con su código es que asume que el código se ejecuta sincrónicamente, pero no es así. se ejecuta de forma asíncrona. por lo tanto, los mensajes aún no están configurados cuando ejecuta
console.log(messages);
haz algo como esto en su lugar:
var userIds = [id1, id2, id3];
User.find({"_id": {$in: userIds}}, function (err, users) {
console.log(users);
});
editar OK veo. desea agregar la información de usuario a los diferentes mensajes. La forma más fácil de lograrlo es usar el módulo asíncrono:https ://github.com/caolan/async
async.map(messages, getUserInfo, function (err, result) {
if (err) {
console.log(err);
return;
}
// log all msg with userinfo
console.log(result);
});
function getUserInfo (msg, callback) {
User.findById(msg.userId, function (err, user) {
if (err) {
callback(err);
return;
}
msg.user = user;
callback(null, msg);
});
}