Sequelize中的动态关联

时间:2016-09-05 19:44:59

标签: node.js sequelize.js

我想在sequelize中创建一个动态关联。 假设我有属于项目的用户。 这些用户在项目中扮演不同的角色。 例如。一些用户是开发人员,其他人是建筑师等。

var User = sequelize.define("user", {...})
var Project = sequelize.define("project", {...})

var ProjectUser = Project.hasMany(Users)

我知道我可以将它们添加为:

Project.hasMany(User, { as: "developers"})
...

我将所有角色都放在一个单独的表格中。

var Role = sequelize.define("role", {...})

如何根据角色进行关联?
类似的东西:

var UserProject("userProject", {
   userId: ...,
   roleId: ....,
   projectId: ...
})

Project.hasMany(User, { through: UserProject })

1 个答案:

答案 0 :(得分:2)

我在sequelize文档中读到你可以做这样的事情。 http://docs.sequelizejs.com/en/latest/api/associations/belongs-to-many/

更新:

实际上这让我有可能做我想做的事,但是 我当时不知道如何查询数据。

例如,我如何知道用户所拥有的角色,尤其是在项目实例中。

sequelize.define("project", { }, {
    instanceMethods: {
        getPublicRepresentation() {
            this.users //how do I know the role of the user here?
        }
    }
})

我还在遇到的另一个问题是,当我想查询时。

Project.findAll({
    include: {
        model: User
    }
})

如何让where角色等于......?