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); 

    }); 

    } 

Выход, который я получаю, это список вопросов, на которые не задан вопрос.

{ 
    "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. Пожалуйста, воздержитесь от ан. –

+0

Готово. «Спасибо за отзыв! Голоса, сделанные теми, у кого меньше 15 репутации, записаны, но не изменяйте publicl" –