TypeORM:如何在typeORM中应用归纳/专业化?

时间:2019-07-17 11:32:39

标签: node.js express orm typeorm

我有两种不同类型的用户-假设供应商和人工。它们是不重叠且不覆盖的(即,某些用户可能既不是卖方也不是劳动力,而卖方永远不可能是劳动力)。

SQL表示形式如下:

CREATE TABLE users(id INTEGER PRIMARY KEY, ...)
CREATE TABLE vendors(id INTEGER PRIMARY KEY REFERENCES users(id), ...)
CREATE TABLE labour(id INTEGER PRIMARY KEY REFERENCES users(id), ...)

但是用TypeORM表示这一点的好方法是什么?

这是一种可能,但这不是一个好的设计:

@Entity('users')
export class User extends BaseEntity {

    @PrimaryGeneratedColumn()
    public id: number;

    @OneToOne(type => Vendor, v => v.user, { nullable: true })
    vendor: Vendor;

    @OneToOne(type => Labour, l => l.user, { nullable: true })
    labour: Labour;
}

@Entity('vendors')
export class Vendor extends BaseEntity {

    @PrimaryColumn()
    public id: number;

    @OneToOne(type => User, u => u.vendor)
    @JoinColumn({ name: 'id' })
    user: User;
}

...

有没有更好的方法?最好只保留反向关系吗?

0 个答案:

没有答案