我有两个模型:Person和Team
假设模型很简单(假设基本的字符串/整数类型):
team:
id
name
ownerId
和
person:
id
name
我想表示这两个模型之间的关联,这样一个人可以属于多个团队,一个团队可以属于多个人(即多对多关系)。
要做到这一点在 Sequelize 中是直截了当的:
Team.belongsToMany(Person, {through: 'TeamPerson'})
Person.belongsToMany(Team, {through: 'TeamPerson'})
这将创建一个名为TeamPerson和teamId的新表personId。我假设这个表的主键是两个 ID 的组合。
我还希望每支球队都有一名队长:
Team.belongsTo(Person {as: 'captain'})
这将添加captainId到团队模型中。
这是我的问题,我希望一个人能够创建一个团队,但我不希望他们能够创建两个同名的团队。但是,我确实希望允许其他人创建一个与其他人同名的团队。因此,用户 ID 1 不能有两个名为“Falcons”的团队,但用户 ID 1 可以有一个名为“Falcons”的团队,而用户 ID 2 可以有一个名为“Falcons”的团队。
本质上,name 和 CaptainId 应该是 Team 表上的复合主键。谁能给我一个关于如何实现这一目标的提示?