我正在使用反射元数据库来存储有关类属性的元数据:
@Table({ tableName: "xyz" })
export default class User extends Model<User> {
@Column({
type: DataType.STRING,
unique: "email_deletionDate_const",
})
@ESIndexed()
public email: string;
@Column(DataType.STRING)
@ESIndexed()
public firstName: string;
} ...
装饰器:
export const SEQUELIZE_ES_METADATA = "sequelize:esIterable";
export const ESIndexed = () => {
return (target, key) => {
let currentMetadata = Reflect.getMetadata(SEQUELIZE_ES_METADATA, target);
if (!currentMetadata) {
currentMetadata = [];
}
currentMetadata.push(key);
return Reflect.defineMetadata(SEQUELIZE_ES_METADATA, currentMetadata, target);
};
};
我的目标是能够获得所有由装饰器ESIndexed()装饰的字段。 当我尝试从类实例/对象中获取它们时,没有问题:(可行)
Reflect.getMetadata(SEQUELIZE_ES_METADATA, new User());
但是,我不想每次都创建一个实例。 有什么方法可以从类(构造函数)本身获取元数据?
类似的东西似乎不起作用:
Reflect.getMetadata(SEQUELIZE_ES_METADATA, User);