2016-10-16 5 views
0

나는 섹션 배열로 퀴즈 모델을 가지고 있고 각 섹션에는 질문에 대한 참조 배열이 있습니다. 퀴즈에 질문을 채우고 싶습니다.mongoose에 다단계 배열을 채우는 방법

QuizModel

var quizSchema = new Schema({ 
    name: String, 
    code: Number, 
    creator: String, 
    createdBy: { type: Schema.Types.ObjectId, ref: 'user' }, 
    section:[{ 
     title: String, 
     questions: [{type: Schema.Types.ObjectId ,ref: 'question'}] 
    }], 
    createdOn: {type:Date, default:Date.now} 
}); 

및 questionModel

var questionSchema = new mongoose.Schema(
    { 
     question: String, 
     answer: [String], 
     correct: Number, 
     createdOn: {type:Date, default:Date.now} 

    }); 

나는 내 시도 http://mongoosejs.com/docs/populate.html#deep-populate

채우는 공식 몽구스 문서를 다음 한

quizSchema.find({_id: quiz_id}) 
.populate({ 
    path: 'section' , 
    populate: { 
    path: 'section.questions', 
    model: 'questionSchema' 
    } 
}) 
.exec(function (err, result) { 

    if (err) return done(err,null); 
    console.log("list of questions are" + result); 
    return done(err, result); 

    }); 

    } 

내가 얻는 결과물은 실제 질문이 아닌 질문의 ID 목록입니다.

{ 
    "status": "success", 
    "message": "Quiz data", 
    "result": [ 
    { 
     "_id": "57fd5912ec0ad6bc8b67d71c", 
     "name": "My Quiz", 
     "creator": "foo", 
     "__v": 0, 
     "code": 124, 
     "createdOn": "2016-10-11T21:26:42.774Z", 
     "section": [ 
     { 
      "_id": "57fd7e82c20a2fe5da3ed569", 
      "questions": [ 
      "57fd7f8560e98fe710878820", 
      "57fd7f9d60e98fe710878821", 
      "57fd81408b20dae9108d347c", 
      "57fd81408b20dae9108d347d", 
      "57fd826aea5159ea5ff2f1a9", 
      "57fd82ab0dbc0feaa753e50c", 
      "57fd82efd789afeb0353f036", 
      "57fd84b0fef6a2ed21fad5ae", 
      "57fd84cc5dab10ed471bcaf5", 
      "57fd84cd5dab10ed471bcaf6" 
      ] 
     }, 
     { 
      "title": "next section", 
      "_id": "57fff1e0f1913138c27e50a0", 
      "questions": [ 
      "57fff242f1913138c27e50a1" 
      ] 
     } 
     ] 
    } 
    ] 
} 

필드 채우기에 문제가있는 것 같지만 확실하지 않습니다.

답변

0

그냥

quizSchema.find({_id: quiz_id}) 
.populate({ 
    path: 'section.questions' 
}) 
+0

에 오신 것을 환영합니다 @NirajKantSinha에 쿼리를 변경합니다. 친절하게 upvote ans. –

+0

완료. "의견을 보내 주셔서 감사합니다! 명성이 15 미만인 사람의 투표는 기록되지만 공개는" –