我使用的是Sequelize4.38.0,我与belongstomany协会有一个问题。
我这样定义我的表:
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关联。
就像你在上面看到的,我通过表创建了这个关联 RolePrivilege
它还有一个附加属性 restriction
.
当我想给角色添加权限时,我通常是这样做的:
Role.build({id: role}).setPrivileges(privileges)
哪里 privileges
只是特权id的数组。所以我现在想填补 restriction
联接表中的字段( RolePrivileges
)为每个特权到角色关联指定一个特殊值。
所以我尝试了下面描述的方法
privileges = privileges.map(p => {
const priv = Privilege.build({id: p})
priv.rolePrivileges.restriction = 'a'
return priv
})
像上面一样做了同样的查询。但是它抛出了一个错误 restriction
在未定义上是不可能的。在一个长时间的google会话之后,我尝试将关联表包含在 build
方法,但仍然不起作用。
你能帮我吗?
1条答案
按热度按时间u0njafvf1#
有时错误仍然摆在屏幕前。我把文件看错了。
而不是写以下内容:
我之前只需要创建关联对象:
也许我能帮上忙。