gpt4 book ai didi

node.js - Sequelize typescript : Common Method for get() in a model

转载 作者:行者123 更新时间:2023-12-03 22:39:28 30 4
gpt4 key购买 nike

我为 START_DATE、END_DATE、MEET_START_DATE、MEET_END_DATE 定义了一些 get() 函数。如果您仔细查看为这些列定义的 get() 函数,它们非常相似。所以我试图为所有这些 get() 函数定义一个通用函数。最后定义了一个类似于 getDay() 的函数。但是我无法在 get() 方法中从 with 调用 getDay() 。我无权访问它。
如何从 get() 函数或类似函数调用 getDay()? 我还需要传递参数,以便我可以访问字段名称和实例。

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

@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(){
let value : Date = this.getDataValue('START_DATE');
return value.getDay();
}})
START_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){
let value : Date = this.getDataValue('END_DATE');
return value.getDay();
}})
END_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){
let value : Date = this.getDataValue('MEET_START_DATE');
return value.getDay();
}})
MEET_START_DATE: Date;
@Column({type:DataType.DATEONLY,
get(){
let value : Date = this.getDataValue('MEET_END_DATE');
return value.getDay();

}})
MEET_END_DATE: Date;


getDay(field,instance) {
let value : Date = instance.getDataValue(field);
return value.getDay();


}
}

最佳答案

最简单的方法是在 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 实现中将 Person 转换为 get,这可能会起作用,具体取决于 sequelize 在运行时(我不熟悉它)。

关于node.js - Sequelize typescript : Common Method for get() in a model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52086365/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com