繁体   English   中英

排序如何使用关联表?

[英]Sequelize how to use association table?

我在Sequelize中遇到问题,因为我不知道如何解决该问题。

我有3张桌子:A(游戏),B(平台)和AB(游戏平台)。 A可以有1到许多B,B可以有​​0到许多A。为此,我创建了一个关联表:AB。

在Sequelize中,我创建了A,B,AB模型,然后执行了以下操作:

db.Game.belongsToMany(db.Platform, {as: 'Game', through: 'GamePlatformsJoin', foreignKey: 'game_platforms_fk_game'});
db.Platform.belongsToMany(db.Game, {as: 'Platform', through: 'GamePlatformsJoin', foreignKey: 'game_platforms_fk_platform'});

现在是这样:将在我的网站上创建平台,然后创建游戏。 创建游戏时,用户将需要定义与其关联的平台。 但是如何告诉Sequelize我想要我的关联表中的新条目? 我可以像添加其他任何表一样添加它,但是有没有更简单的方法?

解决我的问题的方法是在“关联对象] 1下的文档中(我必须跳过了它)。

这说明如果正确配置了belingsToMany,将动态创建几种方法来管理关联(getX,addX,getXs,addXs等)。

我的第二个问题是我在belongsToMany中输入的别名,因为我不知道它使用的是模型的名称,所以我自己设置了一个名称并交换了它们。

现在,我删除了别名,它可以正常工作。

db.Game.belongsToMany(db.Platform, {through: db.GamePlatforms, foreignKey: 'game_platforms_fk_game'});
db.Platform.belongsToMany(db.Game, {through: db.GamePlatforms, foreignKey: 'game_platforms_fk_platform'});

这是我用来测试“添加关联”的代码。

Game.find({where: {game_short: 'SFV'}})
              .then(function(game) {
                Platform.find({where: {platform_short: 'PC'}})
                  .then(plat => game.addPlatform(plat));
              })
              .catch(err => console.log('Error asso game and platform', err));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM