如何在sequelize-typescript中创建模型类的两个子类?

时间:2018-01-19 10:41:57

标签: node.js associations sequelize.js

我正在使用sequelize-typescript创建一个sequelize的node.js服务器。我有一个实体 - 将其命名为Employee

在数据库中,所有配置文件存储在同一个表中,但有两种不同的类型 - 比如ManagerOperator。 每种类型都有自己与不同表格的关系 - 比如说:

Manager -> ManagerOptions

Operator -> OperatorOptions

我已经创建了一个模型Employee和两个子类 - ManagerOperator。每个扩展的Employee都具有相同的基本属性,并且每个子类中还有一些其他属性,例如ManagerOprtionsOperatorOptions

// Employee.ts

import { Table, Column, Model } from 'sequelize-typescript';

@Table({
    tableName: 'employees'
})
export class Employee extends Model<Employee> {
    @Column public type_id: number;
    @Column public name: string;
    @Column public url: string;
}

// Manager.ts

import { Column, HasOne } from 'sequelize-typescript';
import { Employee } from './Employee';
import { ManagerInfo } from './ManagerInfo';

export class Manager extends Employee {
    @Column public subordinate_count: number;
    @HasOne(() => ManagerInfo, {
        foreignKey: 'manager_id',
        as: 'info'
    })
    public info: ManagerInfo;
}

// Operator.ts

import { Column, HasOne } from 'sequelize-typescript';
import { Employee } from './Employee';
import { OperatorInfo } from './OperatorInfo';

export class Operator extends Employee {
    @Column public calls_count: number;
    @HasOne(() => OperatorInfo, {
        foreignKey: 'operator_id',
        as: 'info'
    })
    public info: OperatorInfo;
}

如果您不熟悉此库,我如何使用sequelize-typescript(或sequelize}创建此类关系,以便我可以{{1}搜索Employees结果集中有不同的模型吗?

name

希望我能解释得对。

0 个答案:

没有答案