【问题标题】:sequelize has many associations updatesequelize 有很多关联更新
【发布时间】:2021-09-15 17:08:19
【问题描述】:

我正在使用 node js 和 sequelize (mysql) 构建 resful api。

我有两个模型,(事件)有很多(用户)。

为了使用模型创建事件,我正在这样做:

 add(req, res) {
    return event.create(
      {
        name: req.body.name,
        users: req.body.users,
      },
      {
        include: [
          {
            model: User,
            as: "users",
          },
        ],
      }
    )

一切正常。

但是当我想更新时,我在这里遇到了大问题。 例如我当前的事件看起来像:

"events" : [
{
 "id" : 1 ,
"name" :"name"
"users" :[
{
"id" :1 ,
"name" :"name1",
},
{
"id" :2 ,
"name" :"name2",
}
]
}]

我想要达到的目标: 我想更新用户: 如果用户的 id 存在于我要更新用户的请求中,但如果该 id 不存在于我要删除的请求中的用户。

我如何在 sequelize 和 node js 中做到这一点。我在这里是堆栈。

【问题讨论】:

    标签: mysql node.js sequelize.js has-many insert-update


    【解决方案1】:

    向您的路由器展示您尝试处理该逻辑的位置。 当您说用户存在时,您的意思是用户完全存在还是仅属于请求的事件,请更具体!!!

    // lets say you want to update users of event id=1
    const event = await Event.findByPk(1)
    // you can get users belonging to event by association mixins
    const users = await event.getUsers()
    // loop through users to update them
    for (let i=0; i < users.length; i++) {
      // put your logic to make changes to users
      if (users[i].getDataValue('id') == 1) {
        await event.removeUser(users[i])
      }
    }
    

    【讨论】:

    • 谢谢你的回复。我的问题是如何更新这个“事件”:[ { "id" : 1 , "name" :"name" "users" :[ { "id" :1 , "name" :"name1", }, { "id" :2 , "name" :"name2", } ] }] 。我想更新事件路线内的用户
    • 再次检查我的答案,希望能满足你的目标
    • 感谢您的帮助。如何在循环内部删除 id = 1 的用户??
    • 你想从事件中删除用户还是从数据库中删除用户
    • 从事件中删除
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多