2016-07-23 33 views
0

我試圖用貓鼬返回數組中的特定對象。我的文件如下:用Mongoose和Node.js查找數組中的特定對象

{ 
"_id": { 
    "$oid": "577a9345ba1e2a1100624be7" 
}, 
"name": "John Doe", 
"password": "$2a$10$NzqAqxTRy8XLCHG8h3Q7IOLBSFCfBJ7R5JqHy1XHHYN.1h074bWJK", 
"__v": 0, 
"birthDate": "14.07.2016", 
"academic": [ 
    { 
     "about": "asdfasdf", 
     "to": "asdf", 
     "from": "asfdasdf", 
     "institute": "asdfasdf", 
     "qualification": "asdfasdf", 
     "_id": { 
      "$oid": "579111b3e68d489f1ff8b6dc" 
     } 
    } 
] 

}

我想返回學術對象在列表中。我傳遞的機構名稱進入路線我的代碼如下:

getAcademicInstituteByName: function(req, name, cb){ 
    User.findById(req.user.id, function (err, user) { 
     if(err) throw err; 
     if(user){ 
      academic = user.academic.institute(name); 
      return cb(null, academic); 
     } 
    }); 

但是這是行不通的,因爲我得到一個錯誤說user.academic.institute不是一個函數。任何幫助將不勝感激

+0

你想獲得機構的價值? 「asdfasdf」? –

+0

您好,我想通過傳入機構「asdfasdf」的值來返回該數組中的整個對象 –

回答

1

user.academic.institute是一個數組,這樣你就可以使用普通的數組運算找到你感興趣的條目:

var academic = user.academic.institute.filter(i => i.institute === name) 
             .pop(); 
return cb(null, academic); 
0
academic = user.academic.institute; 

這應該工作,雖然我沒有測試過它。