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/