sql >> Databáze >  >> NoSQL >> MongoDB

Jak provedete spojení na poli v mongoose (mongodb) pomocí node.js?

největší problém s vaším kódem je, že předpokládáte, že kód běží synchronně - ale není tomu tak. běží asynchronně. takže zprávy ještě nejsou nastaveny, když spustíte

 console.log(messages);

udělejte místo toho něco takového:

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

upravit OK, chápu. chcete přidat userInfo do různých zpráv. Nejjednodušší způsob, jak toho dosáhnout, je použít asynchronní modul: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. nodejs, redis. zkontrolujte, zda klíče existují, a pokud ne, vytvořte nové

  2. Vraťte pouze konkrétní pole z dílčího dokumentu pole projekce

  3. Jak dotazovat/aktualizovat dílčí dokument v MongoDB pomocí ovladače C#

  4. Jak spustit soubor js v mongo pomocí jarních dat