在我的数据库中,我有用户。一个用户可以拥有多个 Angular 色。一个 Angular 色可以属于多个事件,事件可以属于多个 Angular 色。与事件关联的 Angular 色意味着具有该 Angular 色的任何用户都可以执行该事件。
使用 Sequelize,并给定一个特定的事件 ID,查询 User 实例是否至少有一个 Angular 色有权使用该 ID 执行事件,然后返回某种真/假响应,因此我的最佳方法是什么?在继续之前知道他们是否有权执行事件?
如果它是一个原始查询,它可能看起来像这样:
SELECT EXISTS(SELECT *
FROM "Activity_Role"
WHERE "ActivityId" = 'READ_FILE'
AND "RoleId" = ANY(SELECT "RoleId"
FROM "User_Role"
WHERE "UserId" = '12321')
LIMIT 1);
有没有办法在不诉诸原始查询的情况下做到这一点?
最佳答案
尝试使用 where 子句进行嵌套查询
User.findAll({
include: [{
model: Role,
include : [{model : Activity, where : {id : activityID}}]
}]
})
关于javascript - Sequelize - 如何查询间接关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42083274/