Node.js 在Sequelize的多对多关联中包含中间表

Node.js 在Sequelize的多对多关联中包含中间表,node.js,sequelize.js,Node.js,Sequelize.js,我有三个模型 用户、课程、课程表 。他们通过网络建立了多对多的关系 CourseUser 我想知道用户在特定课程中的角色,我正在使用此原始查询: const queryRoles = `SELECT "roleName" FROM course_roles cr JOIN course_users cu ON cr.id = cu."roleId" WHERE "userId"=${tokenData.id} AN

我有三个模型

用户、课程、课程表

。他们通过网络建立了多对多的关系

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 } }]
  });
但我有一个错误:

SequelizeAgerLoadingError:课程\用户未关联到 当然啦


那么,有没有办法处理Sequelize?谢谢

首先,您的原始SQL查询中可能存在SQL注入漏洞(您将一些输入与SQL查询连接在一起)。使用这个你能提供你的续集模型吗?
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'
});