在Sequelize中将中间表包含在多对多关联中

时间:2019-09-12 04:23:00

标签: node.js sequelize.js

我有3个型号,

  

用户,课程,CourseRole

。他们通过

建立了多对多关系
  

CourseUser

我想知道用户在特定课程中的角色,我正在使用此原始查询:

const queryRoles = `SELECT "roleName" FROM course_roles cr 
                    JOIN course_users cu ON cr.id = cu."roleId"
                    WHERE "userId"=${tokenData.id} AND "courseId"=${courseId}`;

const role = await db.query(queryRoles, { type: db.QueryTypes.SELECT });

但是我想使用sequelize,我尝试这样做:

const role = await CourseRole.findOne({
    attributes: ["roleName"],
    include: [{ model: CourseUser, where: { userId: tokenData.id } }]
  });

但是我得到一个错误:

  

SequelizeEagerLoadingError:课程用户未与   course_roles!

User.belongsToMany(Course, {
  as: 'courses',
  through: CourseUser,
  foreignKey: 'userId'
});
Course.belongsToMany(User, {
  as: 'organization_users',
  through: CourseUser,
  foreignKey: 'courseId'
});
CourseRole.belongsToMany(User, {
  as: 'organization_users',
  through: CourseUser,
  foreignKey: 'roleId'
});
User.belongsToMany(CourseRole, {
  as: 'course_roles',
  through: CourseUser,
  foreignKey: 'userId'
});

那么Sequelize有什么办法吗?谢谢

0 个答案:

没有答案