Общие столбцы для всех сущностей в nestjs - PullRequest
0 голосов
/ 23 января 2020

допустим, есть разные сущности Пользователь, Роль, Задача

Все эти сущности имеют createdBy, updatedBy, createdOn, updatedOn общего.

Я хочу чтобы узнать, как я могу создать базовую сущность так, чтобы вся сущность расширяла базовый класс в гнезде js, используя Typeform.

1 Ответ

0 голосов
/ 23 января 2020

Это место, где следует использовать наследование.
По сути, идея состоит в том, чтобы иметь базовый класс / сущность, которая собирает общие логики c, или структуру, в которой многие другие классы / сущности разделяют эти общие логики c .

Например: у всех кошек, собак и слонов одинаковые характеристики, поэтому мы можем захотеть собрать все эти сходные характеристики в одном месте, чтобы избежать дублирования логик c и кода.

Итак, давайте посмотрим на простейший пример только для понимания основ c.

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;

    ...
}

Пожалуйста, прочитайте о наследовании, которое является базовым c и очень важным принципом в программировании и OOP.

...