node+koa+sequelize 如何新增关联表数据?

目前我有两个表(users、roles)和一个关联表(urs),多对多关系

我想在新增用户(user)的同时时同时关联 1-N 个角色(role)

koa2 路由代码如下:

router.post('/register', async ctx => {
  const user = await User.create(ctx.request.body, {
    include: [Role]
  })
  ctx.body = success(user, '注册成功')
})

请求代码如下:

### register
POST http://localhost:3000/api/user/register
Content-Type: application/json

{
  "username": "admin",
  "password": "e10adc3949ba59abbe56e057f20f883e",
  "avatar": "https://oyal.oss-cn-beijing.aliyuncs.com/img/202205031254907.jpg",
  "role": 0,
  "nickname": "admin",
  "roles": [
    {
      "name": "超级管理员"
    },
    {
      "name": "管理员"
    }
  ]
}

roles 表中的 name 是唯一值。如果请求中的 name 值都不存在于 roles 表数据中,可以正常创建用户和相应的角色、关联表数据,如果已经存在会报错。Duplicate entry '超级管理员' for key 'name'

我的想法是如果请求中的 name 值不存在,则新增 role 相应数据并且关联到新增的用户,已经存在的直接关联到相应的 roleId

这种想法要怎么实现呢?目前还没有好的实现思路

阅读 2.2k
1 个回答

经过多方查询得知,建立关联后 User 会自动添加 addRoles、getRoles、setRoles 方法,官方文档并没有找到对这些方法的描述,嘤~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏