Reputation: 853
I have three relations with association like this:
User.belongsToMany(Course, { as: 'courses', through: CourseUser, foreignKey: 'userId' });
Course.belongsToMany(User, { as: 'users', through: CourseUser, foreignKey: 'courseId' });
CourseRole.belongsToMany(User, { as: 'users', through: CourseUser, foreignKey: 'roleId' });
User.belongsToMany(CourseRole, { as: 'course_roles', through: CourseUser, foreignKey: 'userId' });
I'm trying to do a nested include to find all user in a course and their roles.
const course = await Course.findOne({
where: { id: courseId },
include: [{ model: CourseUser, as: 'organization_users' }, { model: CourseRole, as: 'course_roles' }]
});
But it does not work, I did many research but perhaps dont have a way to do this type of include in sequelize?
Upvotes: 0
Views: 265
Reputation: 1583
Try use required: true when loading course while finding roles which include users include courses.
const roles = await CourseRole.findAll({
include: [
{
model: User,
as: 'users',
include:[{
model: Course,
as: 'courses',
where: {id: courseId},
required: true
}]
}
],
});
Upvotes: 1