sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur gör man en join på en array i mongoose (mongodb) med node.js?

det största problemet med din kod är att du antar att koden körs synkront - men det gör den inte. den körs asynkront. så meddelanden är inte inställda ännu när du kör

 console.log(messages);

gör något så här istället:

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

redigera okej jag förstår. du vill lägga till användarinfo till de olika meddelandena. Det enklaste sättet att uppnå detta är att använda asynkroniseringsmodulen: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. mongodb ansluta med php

  2. Behöver göra .toArray() för att få utdata från mongodb .find() på nyckelnamn inte värde

  3. Hur ringer man db.eval() via mongoose?

  4. Skapa MongoDB Unique Key med C#