Я использую библиотеку отражения-метаданных для хранения метаданных, относящихся к свойствам класса:
@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);