MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wykonać sprzężenie w tablicy w mongoose (mongodb) za pomocą node.js?

Największym problemem z twoim kodem jest to, że zakładasz, że kod działa synchronicznie - ale tak nie jest. działa asynchronicznie. więc wiadomości nie są jeszcze ustawione po uruchomieniu

 console.log(messages);

zamiast tego zrób coś takiego:

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

edytuj dobra, widzę. chcesz dodać informacje o użytkowniku do różnych wiadomości. Najłatwiejszym sposobem na osiągnięcie tego jest użycie modułu asynchronicznego: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. Jak zbudować skracacz adresów URL za pomocą Node.js i MongoDB

  2. Ostrzeżenie:uzyskiwanie dostępu do nieistniejącej właściwości „MongoError” eksportu modułu wewnątrz zależności cyklicznej

  3. Jak stworzyć ograniczoną kolekcję za pomocą Spring Data? - MongoDB

  4. Jak znaleźć podobieństwo w polu dokumentu MongoDB?

  5. Wstawianie dużej tablicy obiektów w mongodb z nodejs