我有一个实例,其中有用户 和角色。我有以下内容:
var User = sequelize.define("Users", {
username: DataTypes.STRING,
password: DataTypes.STRING,
});
var Role = sequelize.define("Role", {
role: DataTypes.STRING
});
var UsersRole = sequelize.define("UsersRole");
User.belongsToMany(Role, {through: UsersRole});
它在数据库中为我创建了一个包含 UserId 和 RoleId 列的 UsersRoles 表。这一切都很好,但现在我想更新用户角色,我不知道该怎么做!到目前为止,我已经尝试过以下方法:
models.Users.findAll({
where: { id: req.params.id },
include: [{ all: true }]
}).then(function(dbUser){
dbUser[0].Roles[0].updateAttributes({
RoleId: req.body.role,
},
{
where: { UserId : req.params.id }
}
).then(function (result) {...
总而言之,我想做的就是能够更改用户角色,因此更新“UsersRoles”表并更改给定的RoleId>用户 ID。我似乎不太明白如何通过任何 sequelize 语法访问 UsersRoles 表!
我可以写一些原始 SQL,但感觉不对?
编辑
我只想更新一个用户角色,如果表有:
| UserId | RoleId | ------------------- | 1 | 1 |
我希望能够将其更改为:
| UserId | RoleId | ------------------- | 1 | 2 |
但我不太明白执行此操作的代码!
最佳答案
不需要直接与连接表交互——你可以简单地做
user.setRoles([newRole]);
请注意,我正在传递一个数组,因为用户可以拥有多个角色 - set
删除所有当前分配的角色。如果要添加新角色并保留现有角色,请使用
user.addRole(newRole);
关于node.js - Sequelize 更新嵌套关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37947290/