2016-07-23 2 views
0

Я пытаюсь вернуть определенный объект в массив с mongoose. Мой документ выглядит следующим образом:Найти конкретный объект в массиве с 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; 

Это должно работать, хотя я не проверял его.

Смежные вопросы