2016-04-11 4 views
0

Bu sorunun her yerinde arama yaptım, ancak aramak için tam kelimeleri bulamıyorum gibi görünüyor, bu yüzden cevabı bulamadım. Neyse, işte burada:findOne sonuçtaOn sonuçta

Kullanıcı Listem var, Her kullanıcının arkadaş listesi var. (Kullanıcılar aynı arkadaşa sahip olabilir). Önce Kullanıcı'ya, sonra arkadaş listesindeki bir arkadaşı bulmaya çalışıyorum.

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

Gördüğünüz gibi

, ben $ elemMatch kullanmak mümkün değilim ve her iki kullanıcı aynı arkadaşınız olabilir çünkü $. , Fonksiyon (err, kullanıcı) { var arkadaş = kullanıcıyı:

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

cevap

0

Eğer arkadaşının kimliğe sahip varsayarak, sadece var friend = user.friendList.id(friendId);

+0

User.findOne ({req.query._id id} çağırır .friendList.id (friendId); Arkadaşa dönüş; // bu doğru mu? }); –

+0

no - 'dönüş arkadaşı;' hiçbir şey yapmayacak. Geri arama içindeki "arkadaş" nesnesini kullanmanız gerekir ... başka bir işlev çağırın veya ihtiyacınız olan her şeyi yapın, ancak bu harici bir kaynaktan gelen eşzamansız kod yüklemesidir ve geri aramadan dönenler –

+0

maalesef sizin için hiçbir şey yapmaz alt belgeyi .id kullanmadan bulmam için başka bir yola ihtiyacım var, çünkü ben 'unique_id' ile oluşturduğum mongo'nun yarattığı '_id' ile değil, arkadaş listesine bakıyorum. –