javascript - Sequelize:使用集合创建连接表属性
问题描述
我正在使用 Sequelize 4.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})
所以代码说一个权限可以有很多角色,一个角色也可以有很多权限——所以它是一个:m关联。
就像您在上面看到的那样,我通过RolePrivilege
具有附加属性的表创建了该关联restriction
。
当我想为角色添加权限时,我通常这样做:
Role.build({id: role}).setPrivileges(privileges)
whereprivileges
只是一个特权 ID 的数组。所以我现在想restriction
将连接表 () 中的字段填充为每个角色关联权限RolePrivileges
的特殊值。
所以我尝试了如下描述的here
privileges = privileges.map(p => {
const priv = Privilege.build({id: p})
priv.rolePrivileges.restriction = 'a'
return priv
})
并做了与上面相同的查询。但它会抛出restriction
无法设置 undefined 的错误。经过长时间的 google 会话后,我尝试在build
方法中包含关联表,但它仍然不起作用。
你能帮我解决这个问题吗?
解决方案
有时错误仍然出现在屏幕前。我读错了文档。
而不是编写以下内容:
priv.rolePrivileges.restriction = 'a'
我之前只需要创建关联对象:
priv.rolePrivileges = {
restriction: 'a'
}
也许我可以帮助某人。
推荐阅读
- python - 尝试 pip 安装时出现 OSError
- html - 最新的 Google 脚本错误 - 从 text/html 到 application/pdf 的转换失败
- ruby-on-rails - Rails 6.1 使用 Image Magick 导致 Backing store not supported 错误
- r - 如何修复此直方图(帖子中的图像和详细信息)?
- javascript - 打字稿(Angular)中二维数组的上一个、当前和下一个功能
- kubernetes - K8s:记录 HTTP 探针“httpGet”的响应正文
- r - R中的自定义函数与dplyr
- sql - 根据另一个不同的列查找唯一值的总和
- javascript - 使用 onclick 和 javascript 函数更改值
- open-liberty - 如何在 Open Liberty 中提供自己的 HttpAuthenticationMechanism 实现