2016-04-11 8 views
0

Ich habe überall nach dieser Frage gesucht, aber es scheint, dass ich nicht die genauen Wörter finden kann, nach denen suchen, deshalb konnte ich die Antwort nicht finden. Wie auch immer, hier ist der Fall:findOne in findOne Ergebnis

Ich habe eine Liste von Benutzern, Jeder Benutzer hat eine Liste von Freunden. (Benutzer können denselben Freund haben). Ich möchte zuerst den User, dann einen Freund auf seiner Freundesliste finden.

User : 
{ firstUser, secondUser } 

firstUser: { name, friendList } 
secondUser: {name, friendList } 

friendList (of firstUser) : { 
     { name: Jhon Doe, age: 5 } 
     { name: mickey, age: 23 } 
} 

friendList (of secondUser) : { 
     { name: Jhon Doe, age: 5 } 
     { name: jane, age: 23 } 
} 

Wie Sie sehen können, bin ich in $ elemMatch und $ verwenden nicht in der Lage, weil beide Benutzer die gleichen Freunde haben kann.

User.findOne({id: req.query._id }, function(err, user){ 
      //what to do here? 
    }); 

Antwort

0

vorausgesetzt, Sie die ID des Freundes haben, würden Sie rufen Sie einfach var friend = user.friendList.id(friendId);

+0

User.findOne ({id: req.query._id} function (err, user) {var Freund = user .friendList.id (friendId); Freund zurückgeben; // ist das korrekt? }); –

+0

Nein - 'Rückkehr Freund;' wird nichts tun. Sie müssen das 'Freund'-Objekt innerhalb des Callbacks verwenden ... eine andere Funktion aufrufen oder tun, was Sie brauchen, aber das ist asynchroner Code Laden von einer externen Ressource, und die Rückkehr aus dem Rückruf tut nichts für Sie –

+0

leider funktioniert das aber Ich brauche einen anderen Weg, um das Unterdokument zu finden, ohne .id zu verwenden, da ich in der Freundesliste nach seiner 'unique_id' suche, die ich nicht durch '_id' erstellt habe, die mongo erstellt hat –

Verwandte Themen