2017-12-11 12 views
0

Sequelizeでモデルを新しい関連付けで更新するにはどうすればよいですか?モデルは、結合表を使用して多対多です。私はこれを試した: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があなたのためにそれをたくさんするだろうと思った?私の脳は痛い:(

+0

StackOverflowのにようこそ、[依頼する方法]をお読みください(https://stackoverflow.com/help/how-to-ask)[MCVEの作成方法](https://stackoverflow.com/help/mcve)に注意してください。適切なラベル(プログラミング言語、関連技術など)で質問にタグを付けるようにしてください。モーあなたが読んで理解しやすく、話題になっているもの(https://stackoverflow.com/help/on-topic) - 良いチャンスが投稿されます。関連する人々を惹きつければ、より迅速なヘルプを得ることができます。がんばろう! – alfasin

答えて

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) 
    }) 
    }) 
関連する問題