Javascript 带有Sequelize和Typescript的外键

Javascript 带有Sequelize和Typescript的外键,javascript,node.js,postgresql,typescript,sequelize.js,Javascript,Node.js,Postgresql,Typescript,Sequelize.js,考虑到这两种续集型号: 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 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;
}
导出类用户扩展模型{
@有许多(()=>用户角色)
@列({primaryKey:true,allowNull:false,unique:true})
UserId:string;
@列({allowNull:false,unique:true})
电子邮件:字符串;
}
导出类UserRoles扩展模型{
@外键(()=>用户)
@列({primaryKey:true,allowNull:false,unique:true})
UserId:string;
@列({allowNull:false})
RoleId:数字;
}
创建用户时,我还将在
UserRoles
中创建一行,其中
UserId
为外键,因此始终存在一对一匹配

当我尝试运行此功能时,我得到:

错误:模型用户上的属性“UserId”和关联“UserId”之间的命名冲突。要解决此问题,请更改foreignKey或关联定义中的as

我想这意味着这两个表具有相同的列名
UserId
,这就是问题的根源?
如果是这样的话,我该如何解决?给它一个别名?或者如何使用?

如果您想要一对一的模型,即一个用户只能被分配一个角色,反之亦然,则对主键和外键约束使用相同的字段,否则使用不同的字段

您已指定
UserRolls.prototype.UserId
是主键。似乎是
UserRolls.prototype.RoleId
应该是主键。@AluanHaddad但在我的表
UserRoles
中唯一唯一的列是
UserId
RoleId
不是唯一的(可以是
1
2