Search code examples
javascriptnode.jsnode-schedule

assign a function to a variable dynamically


i want to get information from several machines via soap api at specefic time ( every 5 min ) so i am using node-schedule and i want to make several schedules depending on each machine in my database. i am using this code:

//fetch machines configrations
function readMachinesConfig() {
  return pool.query("SELECT * FROM machines").then(res => {
    const machines = {};
    res.rows.map(machine => {
      let machine_line = machine.machine_name + "/" + machine.machine_line;
      machines[machine_line] = { url: machine.url, scantime: machine.scantime };
    });
    return machines;
  });
}

readMachinesConfig().then(res => {
  Object.keys(res).map((machine, index) => {
    let scantime = "*/" + res[machine].scantime + " * * * *";
    //***HOW to set variable name dynamically*** 
    jobs[index] = schedule.scheduleJob(scantime, function() {
      console.log(scantime);
    });
  });
  return jobs;
});

so i want to set the variable name that hold the schedule function dynamically so i can reschedule it or cancel it later.

jobs[index] = schedule.scheduleJob(scantime, function() { console.log(scantime); });

how can i do that?


Solution

  • you can use cron-job-maanger to modify jobs

    https://www.npmjs.com/package/cron-job-manager