TypeScript:reflect-metadata从类

时间:2019-09-19 10:57:53

标签: typescript reflect-metadata

我正在使用反射元数据库来存储有关类属性的元数据:

@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);

0 个答案:

没有答案