Sequelize:包含 through.attribute 的模型

Fre*_*mer 3 javascript sequelize.js

是否可以通过 为多对多关系的属性包含模型through

假设我有以下模型:

User = sequelize.define('user', {/* attributes */});
Question = sequelize.define('question', {/* attributes */});
Answer = sequelize.define('answer', {/* attributes */});

/* Where */
Question.hasMany(Answer);
Answer.belongsTo(Question);
Run Code Online (Sandbox Code Playgroud)

我想为每个用户保存他对问题的回答。所以我添加了以下关系:

UserQuestionAnswerRel = sequelize.define('usersAnwers', {
  user: {/**/},
  question: {/**/},
  answer: {/**/}
});

User.hasMany(Question, { through: UserQuestionAnswerRel });
Run Code Online (Sandbox Code Playgroud)

现在我想查询接收他回答的所有问题和他给出的答案的用户。但这如何运作?不幸的是,这不起作用:

User.findAll({
  include: {
    model: Question,
    through: { include: model.Answer }
  }
}).then /* */
Run Code Online (Sandbox Code Playgroud)

请注意:所有这些问答内容只是一个例子。我不可能不使用through关系。

Wil*_*ill 5

我想查询收到他回答的所有问题和他给出的答案的用户

您应该使用嵌套的急切加载。例如,您的查询可能类似于:

User.findAll({
  include: {
    model: UserQuestionAnswerRel,
    include: [
      { model: Question },
      { model: Answer }
    ]
  }
}).then...
Run Code Online (Sandbox Code Playgroud)