首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用联接表更新Seqelize :M

使用联接表更新Seqelize :M
EN

Stack Overflow用户
提问于 2020-05-10 20:48:28
回答 1查看 201关注 0票数 0

目前,我有一个连接表user_roles、用户模型和角色模型,我希望在初始设置之后更新特定用户的角色。

user_roles -用户和角色之间的联接表

代码语言:javascript
运行
复制
<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>

用户模型

代码语言:javascript
运行
复制
<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>

角色模型

代码语言:javascript
运行
复制
<code>module.exports = (sequelize, Sequelize) => {
  const Role = sequelize.define("roles", {
    id: {
      type: Sequelize.INTEGER,
      primaryKey: true
    },
    name: {
      type: Sequelize.STRING
    }
  });

  return Role;
};</code>
EN

回答 1

Stack Overflow用户

发布于 2022-03-12 11:21:49

由于这里有M:N关系并使用belongsToMany,所以可以调用User模型实例的setRole方法,通过传递角色ids来替换链接到特定用户的角色:

代码语言:javascript
运行
复制
await user.setRoles([2])

要向现有角色添加新的用户角色,可以使用addRole/addRoles。请查看正式文档这里,看看在不同类型的关联情况下,什么特殊方法可以动态添加到模型实例中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61718508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档