嵌套包含续集

时间:2019-07-30 04:53:51

标签: node.js sequelize.js

我与这样的联想有三种关系:

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' });

我正在尝试进行嵌套包含,以查找课程中的所有用户及其角色。

const course = await Course.findOne({
    where: { id: courseId },
    include: [{ model: CourseUser, as: 'organization_users' }, { model: CourseRole, as: 'course_roles' }]
  });

但是它不起作用,我做了很多研究,但是也许没有办法在续集中进行这种包含?

1 个答案:

答案 0 :(得分:1)

在加载课程时,查找包含用户包含课程在内的角色时,请尝试使用必填:true

const roles = await CourseRole.findAll({
    include:  [
                { 
                    model: User,
                    as: 'users',
                    include:[{
                        model: Course,
                        as: 'courses',
                        where: {id: courseId},
                        required: true
                    }]
                }
            ],
  });