sql >> Database >  >> NoSQL >> MongoDB

Hoe doe je een join op een array in mangoest (mongodb) met node.js?

het grootste probleem met uw code is dat u ervan uitgaat dat de code synchroon loopt - maar dat is niet het geval. het loopt asynchroon. dus berichten zijn nog niet ingesteld wanneer u

. uitvoert
 console.log(messages);

doe in plaats daarvan iets als dit:

var userIds = [id1, id2, id3];
User.find({"_id": {$in: userIds}}, function (err, users) {
  console.log(users);
});

bewerken oké, ik zie het. je wilt de userInfo toevoegen aan de verschillende berichten. De eenvoudigste manier om dit te bereiken, is door de async-module te gebruiken: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);
  });
}



  1. Een ingesloten document bijwerken in mongoengine

  2. Redis vs. MongoDB:databases in het geheugen vergelijken met Percona Memory Engine

  3. Vind lege documenten in een database

  4. hoe geef je een variabele door aan een regex