Sequelize - 如何查询间接关联?

时间:2017-02-07 06:37:27

标签: javascript sequelize.js

在我的数据库中,我有用户。用户可以拥有许多角色。角色可以属于许多活动,活动可以属于许多角色。与活动关联的角色表示具有该角色的任何用户都可以执行该活动。

使用Sequelize,并给出一个特定的活动ID,查询用户实例是否至少有一个有权使用该ID进行活动的角色,然后返回某种真/假的最佳方法是什么响应所以我知道他们是否有权在继续之前执行活动?

如果它是原始查询,它可能看起来像这样:

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

有没有办法在不诉诸原始查询的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

尝试使用where子句

的嵌套查询
User.findAll({
       include: [{
        model: Role,
        include : [{model : Activity, where : {id : activityID}}]
       }]
    })