Вызов аннотированного метода - PullRequest
1 голос
/ 05 апреля 2020

У меня есть система, в которой я хочу, чтобы некоторые из моих методов периодически запускались. Поэтому я создал аннотацию, подобную этой:

@Service()
export class SensorResolver {
  constructor(private readonly client: HueClient) {}

  @Schedule("*/5 * * * * *")
  @Query(() => [Sensor])
  async getSensors(): Promise<[Sensor]> {
  ...
  }
}

export function Schedule(schedule: string) {
  return function(
    target: any,
    propertyKey: string,
    descriptor: PropertyDescriptor
  ) {
    new CronJob(
      schedule,
      () => {
        const scheduleClasses = [Container.get(SensorResolver)];
        scheduleClasses.forEach((schedule: any) => {
          logger.info("running schedule", {
            data: {
              keys: Object.keys(schedule),
              prototype: Object.getPrototypeOf(schedule)
            }
          });
        });
        logger.info("running schedule function");
      },
      null,
      true,
      "Europe/Stockholm"
    ).start();
    logger.info(
      `registered Schedule hook ${propertyKey} with schedule (${schedule})`,
      {
        data: {
          target,
          propertyKey,
          descriptor
        }
      }
    );
  };
}

, поэтому я хотел бы запустить функцию по расписанию, но, похоже, не могу ее заполучить. propertyKey правильно, но я не могу найти его в прототипе расписания, а target - просто пустой объект.

Я что-то упускаю из виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...