2016-01-20 97 views
0

我有以下设置:如何获得多个结果加入

... 
Survey.hasMany(Question, {as: 'Questions'}); 
Question.hasMany(Answer, {as: 'Answers'}); 

如何获得单个调查的完整记录集?我知道如何获得调查的所有问题,但我希望每个问题都能得到与之相关的所有答案。

Question.findAll({ 
    where: { 
    surveyId: req.surveyId 
    } 
}).then(function (questions) { 
    // Now how do I join questions with their answers? 
}, function (err) { 

}); 

我理想的结构是:

var survey = [ 
    { 
    question: 'some question', 
    answers: [{...},{...},...] 
    }, 
    { 
    ... 
    }, 
    . 
    . 
    . 
] 

回答

2

您应该包括有关模型。

Question.findAll({ 
    where: { 
     surveyId: req.surveyId 
    }, 
    include: [{ 
     model: Answer, 
     as: 'Answers' 
    }] 
}).then(function (questions) { 
    console.log(questions[0].Answers); 
}, function (err) { 

}); 

或者你可以在Survey模型查询和包括QuestionAnswer

Survery.findAll({ 
    where: { 
     id: req.surveyId 
    }, 
    include: { 
     model: Question, 
     include: { 
      model: Answer 
     } 
    } 
}).then(function (surveys) { 
    console.log(surveys[0]); 
}, function (err) { 

}); 
+0

真棒,谢谢!你知道这个文件在哪里显示吗?我很想看看还有什么我不知道的。 –

+0

您可以查看以下内容:http://docs.sequelizejs.com/en/latest/docs/associations/ http://docs.sequelizejs.com/en/latest/docs/models-usage/ – Adam

+0

谢谢!如果你有任何时间,我还有另一个Sequelize.js问题[这里](http://stackoverflow.com/questions/34941290/how-to-filter-based-on-an-include-in-sequelize-js )部分基于我从上面的答案中学到的东西 –