nestjs中所有实体的公用列

时间:2020-01-23 02:47:48

标签: nestjs typeorm

假设存在不同的实体用户,角色,任务

所有这些实体共有createdByupdatedBycreatedOnupdatedOn

我想知道如何创建基础实体,以便所有实体都使用Typeform扩展嵌套js中的基类。

1 个答案:

答案 0 :(得分:1)

这是应该使用继承的地方。
基本上,这个想法是让一个基类/实体收集通用的逻辑或结构,而其他许多类/实体则共享该通用逻辑或结构。

例如: 猫,狗,大象都具有相似的特征,因此我们可能希望将所有这些相似的特征收集在一个地方,以避免逻辑和代码的重复。

因此,让我们看一下最简单的示例只是为了基本了解。

export class Animal {
    protected numberOfLegs: number;
    protected sound(): void;
}

export class Dog extends Animal {
    constructor() {
       super();
       this.numberOfLegs = 4;
    }

    sound(): void {
        console.log('BARK');
    }
}

满足您的需求:

导出基本实体。

import { Entity, Column } from 'typeorm';

export class BaseEntity {
    @Column()
    createdBy: string;

    @Column()
    updatedBy: string;

    @Column()
    createdOn: Date;

    @Column()
    updatedOn: Date;
}

然后从派生实体继承它。

import { Entity, Column } from 'typeorm';
import {BaseEntity} from './base-entity';

export class DerivedEntity extends BaseEntity {
    @Column()
    id: string;

    ...
}

请阅读有关继承的知识,这是编程和OOP中的一项基本且非常重要的原则。