【发布时间】:2018-05-23 17:13:49
【问题描述】:
鉴于这 2 个 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
我想这意味着这两个表具有相同的列名UserId,这会导致问题吗?
如果是这样,我该如何解决?给它某种别名?还是怎么做?
【问题讨论】:
-
您已指定
UserRolls.prototype.UserId是主键。似乎UserRolls.prototype.RoleId应该是主键。 -
@AluanHaddad 但在我的表
UserRoles中唯一的列是UserId,RoleId不是唯一的(可以是1或2)
标签: javascript node.js postgresql typescript sequelize.js