目前,我有一个连接表user_roles、用户模型和角色模型,我希望在初始设置之后更新特定用户的角色。
user_roles -用户和角色之间的联接表
<code>db.user = require("../models/user.model.js")(sequelize, Sequelize);
db.role = require("../models/role.model.js")(sequelize, Sequelize);
db.role.belongsToMany(db.user, {
through: "user_roles",
foreignKey: "roleId",
otherKey: "userId"
});
db.user.belongsToMany(db.role, {
through: "user_roles",
foreignKey: "userId",
otherKey: "roleId"
});</code>用户模型
<code>
module.exports = (sequelize, Sequelize) => {
const User = sequelize.define("users", {
username: {
type: Sequelize.STRING
},
email: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
},
resetPasswordToken: Sequelize.STRING,
resetPasswordExpires: Sequelize.STRING,
});
return User; }; </code>角色模型
<code>module.exports = (sequelize, Sequelize) => {
const Role = sequelize.define("roles", {
id: {
type: Sequelize.INTEGER,
primaryKey: true
},
name: {
type: Sequelize.STRING
}
});
return Role;
};</code>发布于 2022-03-12 11:21:49
由于这里有M:N关系并使用belongsToMany,所以可以调用User模型实例的setRole方法,通过传递角色ids来替换链接到特定用户的角色:
await user.setRoles([2])要向现有角色添加新的用户角色,可以使用addRole/addRoles。请查看正式文档这里,看看在不同类型的关联情况下,什么特殊方法可以动态添加到模型实例中。
https://stackoverflow.com/questions/61718508
复制相似问题