Sequelize:使用 set<Association> 创建 join table 属性
Sequelize: Create join table attribute with set<Association>
我正在使用 Sequelize 4.38.0,但是 belongsToMany 关联有问题。
我这样定义 table:
const Role = db.define('role', {
name: {type: Sequelize.STRING, allowNull: false},
standard: {type: Sequelize.BOOLEAN, allowNull: false}
})
const Privilege = db.define('privilege', {
id: {type: Sequelize.STRING, allowNull: false, primaryKey: true},
description: {type: Sequelize.TEXT, allowNull: false}
})
const RolePrivilege = db.define('rolePrivileges', {
restriction: {type: Sequelize.STRING, allowNull: true}
})
Privilege.belongsToMany(Role, {through: RolePrivilege})
Role.belongsToMany(Privilege, {through: RolePrivilege})
所以代码说一个权限可以有很多角色,一个角色也可以有很多权限-所以它是一个n:m关联。
就像你在上面看到的那样,我通过 table RolePrivilege
创建了那个关联,它有一个额外的属性 restriction
.
当我想给角色添加权限时,我通常这样做:
Role.build({id: role}).setPrivileges(privileges)
其中 privileges
只是一组权限 ID。
所以我现在想将联接 table (RolePrivileges
) 中的 restriction
字段填充为一个特殊值 对于角色关联的每个权限 。
所以我尝试了下面描述的方法 here
privileges = privileges.map(p => {
const priv = Privilege.build({id: p})
priv.rolePrivileges.restriction = 'a'
return priv
})
并进行了与上述相同的查询。但它会抛出无法在 undefined 上设置 restriction
的错误。经过长时间的 google 会话后,我尝试在 build
方法中包含关联 table,但它仍然不起作用。
你能帮我吗?
有时错误仍然出现在屏幕前。
我看错了文档。
而不是写以下内容:
priv.rolePrivileges.restriction = 'a'
之前我只需要创建关联对象:
priv.rolePrivileges = {
restriction: 'a'
}
也许我可以帮助别人。
我正在使用 Sequelize 4.38.0,但是 belongsToMany 关联有问题。
我这样定义 table:
const Role = db.define('role', {
name: {type: Sequelize.STRING, allowNull: false},
standard: {type: Sequelize.BOOLEAN, allowNull: false}
})
const Privilege = db.define('privilege', {
id: {type: Sequelize.STRING, allowNull: false, primaryKey: true},
description: {type: Sequelize.TEXT, allowNull: false}
})
const RolePrivilege = db.define('rolePrivileges', {
restriction: {type: Sequelize.STRING, allowNull: true}
})
Privilege.belongsToMany(Role, {through: RolePrivilege})
Role.belongsToMany(Privilege, {through: RolePrivilege})
所以代码说一个权限可以有很多角色,一个角色也可以有很多权限-所以它是一个n:m关联。
就像你在上面看到的那样,我通过 table RolePrivilege
创建了那个关联,它有一个额外的属性 restriction
.
当我想给角色添加权限时,我通常这样做:
Role.build({id: role}).setPrivileges(privileges)
其中 privileges
只是一组权限 ID。
所以我现在想将联接 table (RolePrivileges
) 中的 restriction
字段填充为一个特殊值 对于角色关联的每个权限 。
所以我尝试了下面描述的方法 here
privileges = privileges.map(p => {
const priv = Privilege.build({id: p})
priv.rolePrivileges.restriction = 'a'
return priv
})
并进行了与上述相同的查询。但它会抛出无法在 undefined 上设置 restriction
的错误。经过长时间的 google 会话后,我尝试在 build
方法中包含关联 table,但它仍然不起作用。
你能帮我吗?
有时错误仍然出现在屏幕前。 我看错了文档。
而不是写以下内容:
priv.rolePrivileges.restriction = 'a'
之前我只需要创建关联对象:
priv.rolePrivileges = {
restriction: 'a'
}
也许我可以帮助别人。