在两个模型之间有多个关联 Sequelize
Having multiple associations between two models Sequelize
我正在为应用程序设计数据库模式。它有两个型号。
- 用户
- 团队
用户将通过两种方式与团队相关联
作为所有者
Team.belongsTo(用户, { foreignKey: "fk_ownerId" });
User.hasMany(团队, { foreignKey: "fk_ownerId" });
作为会员
User.belongsToMany(团队, { 通过: 'TeamToUser' });
Team.belongsTo许多(用户,{ 通过:'TeamToUser' });
所以我最终在两个模型之间建立了多个关联。
在两个模型之间建立多重关联是否是一个好习惯,或者是否有任何其他方法可以设计这两个模型,以便我可以使用最少的代码高效地获取数据?
一切看起来都不错,只是您没有为您的关联指定别名。我强烈建议您在这种情况下这样做:
Team.belongsTo(User, { foreignKey: "fk_ownerId", as: 'owner' });
User.hasMany(Team, { foreignKey: "fk_ownerId", as: 'ownedTeams' });
User.belongsToMany(Team, { through: 'TeamToUser', as: 'teams' });
Team.belongsToMany(User, { through: 'TeamToUser', as: 'members' });
我正在为应用程序设计数据库模式。它有两个型号。
- 用户
- 团队
用户将通过两种方式与团队相关联
作为所有者
Team.belongsTo(用户, { foreignKey: "fk_ownerId" });
User.hasMany(团队, { foreignKey: "fk_ownerId" });
作为会员
User.belongsToMany(团队, { 通过: 'TeamToUser' });
Team.belongsTo许多(用户,{ 通过:'TeamToUser' });
所以我最终在两个模型之间建立了多个关联。
在两个模型之间建立多重关联是否是一个好习惯,或者是否有任何其他方法可以设计这两个模型,以便我可以使用最少的代码高效地获取数据?
一切看起来都不错,只是您没有为您的关联指定别名。我强烈建议您在这种情况下这样做:
Team.belongsTo(User, { foreignKey: "fk_ownerId", as: 'owner' });
User.hasMany(Team, { foreignKey: "fk_ownerId", as: 'ownedTeams' });
User.belongsToMany(Team, { through: 'TeamToUser', as: 'teams' });
Team.belongsToMany(User, { through: 'TeamToUser', as: 'members' });