2016-07-21 6 views
0

나는 내 나이 콜렉션에서 값을 가져와 if(age===5) 조건을 적용하여 확인하려고 시도합니다. 그러면 다른 콜렉션 질문에서 데이터를 다시 가져오고 브라우저로 데이터를 보냅니다.임베디드 mongodb를 노드 j로 쿼리하기

1) :하지만 오류를 나에게

Error While Saving the result TypeError: Cannot read property 'age_group_5' of undefined

코드를 표시합니다. 노드 js

var agegroupQuiz = require('../models/agegroupSchema.js'); 
var questionQuiz = require('../models/question.js'); 

exports.agegroupController = function(req,res,next){ 

    try{ 
    //var age=5; 
    var queryObj = {}; 
    var projection1 = '-_id, age_group.age_group_5.max_age'; 
    var projection2 = '-_id question'; 


     //agegropup Schema 
     var a = agegroupQuiz.findOne(queryObj,projection1); 
     console.log(a.age_group.age_group_5.max_age); 
     var age = a.age_group.age_group_5.max_age; 


     if(age===5){ 

     //question Schema 
     questionQuiz.find(queryObj,projection2,function(err, data){ 
      if(err){ 
      console.log('getQuestions : Error while getting Questions ' + err); 
      return next(err); 
      } 
      //console.log(question); 
      res.send(data); 
     }); 


     }else{console.log("error");} 

    }catch(err){ 
     console.log('Error While Saving the reuslt ' +err); 
     return next(err); 
    } 

    } 


/* exports.agemethod = function(req, res, next){ 
    }*/ 

2). 몽드 스키마 (Mongodb Schema)

a). var mongoose = require('mongoose'); 

    module.exports = (function question() { 

    var Schema = mongoose.Schema; 

    var question = new Schema({ 

    question:{type:Array, 

    _id:{type:Number}, 
    title:{type:String}, 
    options:{type:Array}, 
    result:{type:Array}, 
    feedback:{type:String} 
    }, 
    metadata:{ 
     type:String, 
     category:String, 
     age_group:String, 
     location:String 
    } 

}); 

    var results = mongoose.model('userquestion', question); 

    return results; 

})(); 

b). var mongoose = require('mongoose'); 

    module.exports = (function agegroup() { 

    var Schema = mongoose.Schema; 

    var agegroup = new Schema({ 

    age_group : { 

    age_group_5: { 

     _id:{type:String}, 
     max_age:{type:Number} 
    } 
    } 
    }); 

    var results = mongoose.model('age', agegroup); 

    return results; 

    })(); 
+0

try var projection1 = {_id : false, 'age_group.age_group_5.max_age': 1}; –

답변

0

나는이 코드를 시도해보고 잘 작동하는 것이 좋습니다.

var agegroupQuiz = require('../models/agegroupSchema.js'); 
var questionQuiz = require('../models/question.js'); 


exports.agegroupController = function(req,res,next){ 


try{ 
//var age=5; 
var queryObj1 = {}; //for max age 5 
var queryObj2 = {}; //for question 

queryObj1 = { 
     _id: //id, 
     maxAge: 5 //please put the key in accordance to your schema 
}; 

queryObj2 = { 
     _id: //id, 
     question: //question 
} 

    //agegropup Schema 
    return agegroupQuiz.findOne(queryObj1) 
    .then(function(maxAge){ 
    var age = maxAge; 

    if(age == 5){ 
      questionQuiz.find(queryObj,projection2,function(err, data){ 
       if(err){ 
        console.log('getQuestions : Error while getting Questions ' + err); 
      } 
     //console.log(question); 
     res.send(data); 
     }); 
    }else{ 
      console.log("Error"); 
    } 

    }).catch(function(error){ 
     console.log('Error While Saving the reuslt ' +err); 
    }); 

    } 
    } 

일부 중괄호가 누락되었을 수 있습니다. 확인하고 들여 쓰기를 무시하십시오.

올바른 모델 키를 사용해야합니다.

+0

답장을 보내 주셔서 감사합니다. –

+0

하지만 터미널에 메시지가 표시됩니다. –

+0

우리 자신의 약속 라이브러리 대신 : http://mongoosejs.com/docs/promises.html ^ Coserlab2 @ oserlab2-All-Series : ~/Desktop/Restify/15july16 $ –

관련 문제