如何使用typeorm在两个具有外键的实体之间建立关系
how to create relationship between two entities with foreign key using typeorm
我需要在两个实体之间创建关系,我需要在创建新用户时创建一个用户帐户,其中所有者是创建用户的 ID。
规则:
- 注册新用户时必须属于一个用户帐号。
- 每个用户帐户都必须有一个所有者。
- 我可以将多个用户链接到一个用户帐户。
下面是我今天的代码。
@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 与 UserAccount
有 OneToOne
关系。此外,它还有许多关联帐户 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;
}
我需要在两个实体之间创建关系,我需要在创建新用户时创建一个用户帐户,其中所有者是创建用户的 ID。
规则:
- 注册新用户时必须属于一个用户帐号。
- 每个用户帐户都必须有一个所有者。
- 我可以将多个用户链接到一个用户帐户。
下面是我今天的代码。
@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 与 UserAccount
有 OneToOne
关系。此外,它还有许多关联帐户 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;
}