我在START_DATE,END_DATE,MEET_START_DATE,MEET_END_DATE定义了一些get()函数。如果您仔细查看为这些列定义的get()函数,它们将非常相似。所以我试图为所有这些get()函数定义一个通用函数。与最后定义的getDay()类似的函数。但是我不能从get()方法中调用getDay()。我没有访问权限。 如何从get()函数或类似的函数中调用getDay()?我还需要传递参数,以便可以访问字段名称和实例。
Series
答案 0 :(得分:0)
最简单的方法是在Person
类之外定义您的公用函数:
import {Table, Column, Model, DataType} from 'sequelize-typescript';
function getDayOfField(field: string, instance: Model<any>) {
let value : Date = instance.getDataValue(field);
return value.getDay();
}
@Table({
timestamps: false,
freezeTableName: true,
schema: 'TEST',
tableName: 'Person'
})
export class Person extends Model<Person> {
@Column({ type: DataType.STRING, primaryKey: true })
ID: string;
@Column(DataType.STRING)
NAME: string;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('START_DATE', this); }})
START_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('END_DATE', this); }})
END_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('MEET_START_DATE', this); }})
MEET_START_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){ return getDayOfField('MEET_END_DATE', this); }})
MEET_END_DATE: Date;
}
(将其定义为Person
的静态方法几乎是一样的。)如果您真的想将其设为实例方法,则可以尝试将this
强制转换为{{1} }放在Person
实现中,具体取决于运行时续集的工作方式(我不熟悉)。