MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как се прави съединяване на масив в mongoose (mongodb) с node.js?

най-големият проблем с вашия код е, че предполагате, че кодът работи синхронно - но не е така. работи асинхронно. така че съобщенията все още не са зададени, когато изпълнявате

 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);
  });
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам променлива като име на поле в mongodb-native findOne()?

  2. Заявката Mongoose/mongoDB се присъединява.. но идвам от sql фон

  3. Грешка в Mongodb не успя да използва текстовия индекс, за да удовлетвори заявката $text

  4. Mongoose - вземете дължината на масива в модела

  5. Създайте приложение за водене на бележки за Android с MongoDB Stitch