我对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。
有人可以帮忙吗?
答案 0 :(得分:0)
您可以执行此类操作,如Sequelize Doc about nested eager loading中所述。
team.findAll({
include: [{
model: memberDetails,
as: 'type1Details',
include: [{
model: memberInfo,
as: 'type1Info'
}]
}]
});