Node.js 在Sequelize的多对多关联中包含中间表
我有三个模型 用户、课程、课程表 。他们通过网络建立了多对多的关系 CourseUser 我想知道用户在特定课程中的角色,我正在使用此原始查询: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
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'
});