是否可以通过through
为多对多关系的属性添加模型?
假设我有以下型号:
User = sequelize.define('user', {/* attributes */});
Question = sequelize.define('question', {/* attributes */});
Answer = sequelize.define('answer', {/* attributes */});
/* Where */
Question.hasMany(Answer);
Answer.belongsTo(Question);
我想为每个用户保存他给出问题的答案。所以我添加了以下关系:
UserQuestionAnswerRel = sequelize.define('usersAnwers', {
user: {/**/},
question: {/**/},
answer: {/**/}
});
User.hasMany(Question, { through: UserQuestionAnswerRel });
现在,我想查询收到他回答的所有问题的用户以及他给出的答案。但是这有什么作用呢?不幸的是,这不起作用:
User.findAll({
include: {
model: Question,
through: { include: model.Answer }
}
}).then /* */
请注意:所有这些Q& A的东西只是一个例子。我不可能不使用through
关系。
答案 0 :(得分:3)
我想询问收到他回答的所有问题的用户和他给出的答案
您应该使用Nested eager loading。例如,您的查询可能类似于:
condition: function(e) {
var isFirstOne = true;
var feature = map.forEachFeatureAtPixel(e.pixel, function(feature) {
var n = feature.get('name');
// if n is undefined, feature is the current drawing one
if (!!n) return feature;
});
return (!feature);
}
答案 1 :(得分:1)
我认为看待这个问题的方式是:
`User.hasMany(Question); //this gives every question a userId
Question.belongsTo(User);
User.hasMany(Answer); //this gives every answer a userId
Answer.belongsTo(User);
Question.hasMany(Answer); //this gives every answer a questionId
Answer.beongsTo(Question);
`
因此,让用户收到他回答的所有问题以及他给出的答案的查询将如下所示:
`User.findAll({
where: {
id: userId
},
include: [
{ model: Answer },
include: [
{ model: Question }
]
]
});
`
此查询正在从用户表中选择具有供应商 ID (userId) 的用户,并且包括属于该用户的所有答案,还包括属于所包含的每个答案的所有问题。
当你尝试这个时告诉我