如何使用typeorm在两个具有外键的实体之间建立关系

how to create relationship between two entities with foreign key using typeorm

我需要在两个实体之间创建关系,我需要在创建新用户时创建一个用户帐户,其中所有者是创建用户的 ID。

规则:

  1. 注册新用户时必须属于一个用户帐号。
  2. 每个用户帐户都必须有一个所有者。
  3. 我可以将多个用户链接到一个用户帐户。

下面是我今天的代码。

@Entity()
export class User extends BaseEntity { 
    @PrimaryGeneratedColumn('uuid')
    public id!: string;
    
    //cannot be null
    @ManyToOne(() => UserAccount, (obj) => obj.user)
    public userAccount: Relation<UserAccount>; 
}


@Entity()
export class UserAccount extends BaseEntity {
  @PrimaryGeneratedColumn('uuid')
  public id!: string;
  
  // must be unique and cannot be null
  @OneToOne(() => User, (user) => user.id)
  public owner: Relation<User>;

  @OneToMany(() => User, (obj) => obj.userAccount)
  public user: Relation<User>;
}

上面的方法我试过了,不符合上面的规则

如何以尊重上述规则的方式创建这两个实体之间的关系?

User table 与 UserAccountOneToOne 关系。此外,它还有许多关联帐户 UserAccount[]DOC

@Entity()
export class User extends BaseEntity {
    @PrimaryGeneratedColumn("uuid")
    public id!: string;

    @OneToOne(() => UserAccount, { nullable: false })
    @JoinColumn() // <-- creates relational column in user table
    public ownAccount!: UserAccount;

    @OneToMany(() => UserAccount, (userAccount) => userAccount.user)
    public linkedUserAccounts!: UserAccount[]; // <-- Array
}

@Entity()
export class UserAccount extends BaseEntity {
    @PrimaryGeneratedColumn("uuid")
    public id!: string;

    @ManyToOne(() => User, (user) => user.linkedUserAccounts)
    @JoinColumn() // <-- creates relational column in UserAccount table
    public user!: User;
}