आपके कोड के साथ सबसे बड़ी समस्या यह है कि आप कोड को समकालिक रूप से चलाने के लिए मानते हैं - लेकिन ऐसा नहीं है। यह अतुल्यकालिक रूप से चलता है। इसलिए जब आप निष्पादित करते हैं तो संदेश अभी तक सेट नहीं होते हैं
console.log(messages);
इसके बजाय कुछ ऐसा करें:
var userIds = [id1, id2, id3];
User.find({"_id": {$in: userIds}}, function (err, users) {
console.log(users);
});
संपादित करें ठीक है मैं समझा। आप विभिन्न संदेशों में userInfo जोड़ना चाहते हैं। इसे प्राप्त करने का सबसे आसान तरीका, async मॉड्यूल का उपयोग करना है: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);
});
}