2017-02-07 66 views
0

在我的數據庫中有用戶。用戶可以擁有許多角色。角色可以屬於許多活動,活動可以屬於許多角色。與活動相關聯的角色意味着具有該角色的任何用戶都可以執行該活動。Sequelize - 如何查詢間接關聯?

使用Sequelize並給定特定的活動ID,查詢User實例是否至少有一個具有使用該ID執行活動的權限的角色,然後返回某種真實/虛假的迴應,所以我知道他們是否有權在繼續之前執行活動?

如果它是一個原始查詢的話,大概是這樣的:

SELECT EXISTS(SELECT * 
       FROM "Activity_Role" 
       WHERE "ActivityId" = 'READ_FILE' 
       AND "RoleId" = ANY(SELECT "RoleId" 
             FROM "User_Role" 
            WHERE "UserId" = '12321') 
       LIMIT 1); 

有沒有辦法做到這一點,而不訴諸原始查詢?

回答

0

嘗試用where子句中嵌套查詢

User.findAll({ 
     include: [{ 
     model: Role, 
     include : [{model : Activity, where : {id : activityID}}] 
     }] 
    })