Sequelize,如何在另一个模型上更新关联模型

时间:2017-12-11 23:01:52

标签: javascript node.js sequelize.js

如何在Sequelize中使用新关联更新模型?该模型是多对多的连接表。我试过这个:

app.patch('/api/team/:id/newplayers', function(request, response){
  const players = request.body.players
  db.teams.findOne({
    where: {id: request.params.id},
    include: [{model: db.players}, {model: db.tournaments}]
  }).then(team => {
    return team.updateAttributes(players).then(updatedTeam => {
      response.json(updatedTeam)
    })
  })
})

但这不起作用。它也没有任何错误。它只是不更新​​“玩家”。

我是否必须直接搞乱联接表?我以为Sequelize会为你做很多事吗?我的大脑疼了:(

1 个答案:

答案 0 :(得分:0)

我认为你必须删除所有旧玩家并添加新玩家。或者更复杂的是,您必须将旧的与新的进行比较。插入不存在/已编辑的内容。

最简单的方法是删除所有旧的并添加新的。像。的东西。

.then(team => {
    return db.players.destroy({ 
        where: { id: team.players.map(player => player.id) }
    }).then(() => team)
}).then(team => {
    // should add team id to the players object
    return db.players.bulkCreate(players).then(updatedTeam => {
      response.json(updatedTeam)
    })
  })