2017-02-07 4 views
0

私のデータベースには、ユーザーがいます。ユーザーは多くのロールを持つことができます。ロールは多くのアクティビティに属し、アクティビティは多くのロールに属します。アクティビティに関連付けられているロールとは、そのロールを持つすべてのユーザーがそのアクティビティを実行できることを意味します。Sequelize - 間接的な関連付けを照会する方法?

Sequelizeを使用して、特定のアクティビティIDが指定されている場合、そのIDでアクティビティを実行する権限を持つ少なくとも1つのロールがUserインスタンスに含まれているかどうかを調べるための最良の方法は何ですか?偽の反応があるので、進行する前にアクティビティを実行する権限があるかどうかを知っていますか?それは生のクエリた場合

、それはおそらく次のようになります。生のクエリに頼ることなくこれを行う方法は

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}}] 
     }] 
    }) 
でネストされたクエリをお試しください
関連する問題