Nguyen Hoang Vu
Nguyen Hoang Vu

Reputation: 853

Nested include sequelize

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

Answers (1)

feiiiiii
feiiiiii

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

Related Questions