sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan laver man en join på et array i mongoose (mongodb) med node.js?

det største problem med din kode er, at du antager, at koden kører synkront - men det gør den ikke. den kører asynkront. så beskeder er endnu ikke indstillet, når du udfører

 console.log(messages);

gør noget som dette i stedet:

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

rediger ok, jeg forstår. du vil tilføje brugeroplysninger til de forskellige meddelelser. Den nemmeste måde at opnå dette på er at bruge async-modulet: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. Hvordan kan man se, hvilke forespørgsler der bruger et indeks i MongoDB?

  2. Angivelse af en delt samling med Spring Data MongoDB

  3. Bringer MongoDB til produktion

  4. Hvordan beregnes tidsstempelforskellen i mongodb (i timer)?