Sequelize eager加载嵌套关联

时间:2018-02-17 22:57:06

标签: javascript node.js sequelize.js

我对Sequelize很新,我似乎无法找到问题的答案。

我有一个模特'团队'其关联定义为:

    team.hasMany(members, {foreignKey: 'memberId', onDelete: 'cascade'});
    team.belongsTo(memberDetails, {as: 'type1', foreignKey: 'type1Id'});
    team.belongsTo(memberDetails, {as: 'type2', foreignKey: 'type2Id'});

我想从数据库加载团队行,当我加载每一行时,我想要包含(某些)关联。我使用以下代码:

team.findAll({
   include: [
               {
                   model: memberDetails,
                   as: 'type1'
               }
            ]
})

这会按预期加载团队,并加载相关成员,并加载和附加' type1'每个成员都包括在内。

但是,memberDetail模型也有关联:

    memberDetails.belongsTo(memberInfo, {as: 'type1', foreignKey: 'type1Id'});
    memberDetails.belongsTo(memberInfo, {as: 'type2', foreignKey: 'type2Id'});

我想要的是为每个加载的成员加载的memberInfo关联 - 类似于INCLUDEd memberDetails,但我不知道如何为急切加载的关联指定INCLUDE。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以执行此类操作,如Sequelize Doc about nested eager loading中所述。

team.findAll({
  include: [{
    model: memberDetails,
    as: 'type1Details',
    include: [{
      model: memberInfo,
      as: 'type1Info'
    }]
  }]
});