javascript - Sequelize - 如何查询间接关联?

标签 javascript sequelize.js

在我的数据库中,我有用户。一个用户可以拥有多个 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/

相关文章:

javascript - 在div内执行javascript

mysql - 如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移?

mysql - 在 sequelize 中聚合来自嵌套模型的数据

node.js - Passport js 使用sequelize进行本地身份验证

sql - N :M Relationship between users and guests

mysql - Sequelize 多对多关系不会作为外键保存在数据库中

javascript - 导航 ('/' ) 不导航

javascript - 转到页面顶部,当我们单击标签链接时

javascript - 未捕获的类型错误 : Cannot read property '0' of undefined

javascript - Javascript 中的平均值