Typescript 多对多关系不是';t在数据库中显示
早上好 这是我的代码,问题写在代码下面 这是一种多对多关系,用户可以订阅项目Typescript 多对多关系不是';t在数据库中显示,typescript,nestjs,typeorm,Typescript,Nestjs,Typeorm,早上好 这是我的代码,问题写在代码下面 这是一种多对多关系,用户可以订阅项目 user.entity.ts @Entity("user") export class UserEntity { @PrimaryGeneratedColumn('uuid') id: string; @Column({ type: 'varchar', length: 50, unique: true, }) username
user.entity.ts
@Entity("user")
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
type: 'varchar',
length: 50,
unique: true,
})
username: string;
@Column('text')
password: string;
@Column('text')
role: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.user)
subscription: SubscriptionEntity[];
}
@Entity("item")
export class ItemEntity {
constructor() {}
@PrimaryGeneratedColumn() id: number;
@Column('text') name: string;
@Column('text') description: string;
@Column('decimal') price: number;
@Column('text') picture: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.item)
subscription: SubscriptionEntity[];
}
@Entity("subscription")
export class SubscriptionEntity {
@PrimaryColumn() userId: string;
@PrimaryColumn() itemId: number;
@ManyToOne(type => UserEntity, user => user.subscription)
@JoinColumn({name: "userId"})
user: UserEntity;
@ManyToOne(type => ItemEntity, item => item.subscription)
@JoinColumn({name: "itemId"})
item : ItemEntity;
}
item.entity.ts
@Entity("user")
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
type: 'varchar',
length: 50,
unique: true,
})
username: string;
@Column('text')
password: string;
@Column('text')
role: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.user)
subscription: SubscriptionEntity[];
}
@Entity("item")
export class ItemEntity {
constructor() {}
@PrimaryGeneratedColumn() id: number;
@Column('text') name: string;
@Column('text') description: string;
@Column('decimal') price: number;
@Column('text') picture: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.item)
subscription: SubscriptionEntity[];
}
@Entity("subscription")
export class SubscriptionEntity {
@PrimaryColumn() userId: string;
@PrimaryColumn() itemId: number;
@ManyToOne(type => UserEntity, user => user.subscription)
@JoinColumn({name: "userId"})
user: UserEntity;
@ManyToOne(type => ItemEntity, item => item.subscription)
@JoinColumn({name: "itemId"})
item : ItemEntity;
}
subscription.entity.ts
@Entity("user")
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
type: 'varchar',
length: 50,
unique: true,
})
username: string;
@Column('text')
password: string;
@Column('text')
role: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.user)
subscription: SubscriptionEntity[];
}
@Entity("item")
export class ItemEntity {
constructor() {}
@PrimaryGeneratedColumn() id: number;
@Column('text') name: string;
@Column('text') description: string;
@Column('decimal') price: number;
@Column('text') picture: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.item)
subscription: SubscriptionEntity[];
}
@Entity("subscription")
export class SubscriptionEntity {
@PrimaryColumn() userId: string;
@PrimaryColumn() itemId: number;
@ManyToOne(type => UserEntity, user => user.subscription)
@JoinColumn({name: "userId"})
user: UserEntity;
@ManyToOne(type => ItemEntity, item => item.subscription)
@JoinColumn({name: "itemId"})
item : ItemEntity;
}
问题是我的关系/外键没有显示在我的数据库中:
desc订阅
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| userId | varchar(255) | NO | PRI | NULL | |
| itemId | int(11) | NO | PRI | NULL | |
+--------+--------------+------+-----+---------+-------+
我真的看不出有什么问题。
我紧紧地贴在这一点上,在整个底部你可以看到几乎相同的代码。如果你想
userId
和itemId
分别作为它们表的外键(User
和Item
),你不应该将它们定义为主键。在SubscriptionEntity
上,只需使用自动生成的ID作为主键
但是,如果您想强制向用户订阅一个项目,您可以使用例如:
@Unique([“user”,“item”)
谢谢您,先生,我想它解决了我的问题。另外,在执行desc subscription
时,我希望看到我的约束&FK,但是在验证之后,我只能通过键入show create table subscription
来看到它们。我的坏消息\o/