鉴于这两个Sequelize模型:
export class Users extends Model<Users> {
@HasMany(() => UserRoles)
@Column({ primaryKey: true, allowNull: false, unique: true })
UserId: string;
@Column({ allowNull: false, unique: true })
Email: string;
}
export class UserRoles extends Model<UserRoles> {
@ForeignKey(() => Users)
@Column({ primaryKey: true, allowNull: false, unique: true })
UserId: string;
@Column({ allowNull: false })
RoleId: number;
}
当我创建用户时,我还会在UserRoles
中创建一行,其中UserId
是外键,因此始终存在一对一的匹配。
当我尝试运行时,我得到:
Error: Naming collision between attribute 'UserId' and association 'UserId' on model Users. To remedy this, change either foreignKey or as in your association definition
我想这意味着2个表具有相同的列名UserId
并导致问题?
如果是这样,我该如何解决?给它一些别名?或者怎么样?
答案 0 :(得分:0)
如果您想要一对一的模型,即一个用户只能被分配一个角色,反之亦然,那么对主键和外键约束使用相同的字段,否则使用不同的