2016-07-23 10 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; 

私はそれをテストしていませんが、これはうまくいくはずです。

関連する問題