Используйте переменные вместо чисел для задания расписания работы узла cron

#node.js #truffle #node-cron

Вопрос:

Я очень новичок в node.js. Я хотел бы запланировать задание cron на основе пользовательских данных и передать эти данные в эксперт cron.

Я написал общий кошелек в солидности и хотел бы, чтобы владелец мог планировать транзакции для различных пользователей (идентифицируемых по адресу учетной записи), начиная с определенной даты, а затем с интервалами, установленными в расписании node-cron. Затем я использую солидность, чтобы преобразовать установленную дату в количество секунд от текущего времени и установить функцию тайм-аута на основе этого.

В настоящее время cron-это узел, определяющий день, месяц и т.д. В качестве допустимых входных данных. Как мне передать их в cron, чтобы каждый пользователь мог устанавливать разные интервалы?

 MSetCron_Map = async(Add, Am, Int) =gt; {  const {Day, Hour, Minute} = this.state;  cron_map[Add].push(cron.schedule('Minute Hour Day */${Int} *', () =gt; {  this.SharedWallet.methods.ReloadAllowance(Add, Am).send({from: this.accounts[0]},function(err, success){  if(err) return console.log('Reload failed in Solidity');  if(success) this.SharedWallet.methods.PayOut(Add, Math.round(Am)).send({from: this.accounts[0]});  });  console.log('running a task every ' Int ' months');  }, {  scheduled: true,  timezone: "EST"  }));  //cron_map[Add].start(); //unecessary since scheduled = true  }  

Я попытался создать константы и передать их следующим образом, но это не сработало:

 const {Minute, Hour, Interval} = this.state;  Int = Interval;  const M = Minute;  const H = Hour;  cron_map[Add].push(cron.schedule('${M} ${H} */${Int} * *', () =gt; {  

Я также хотел бы переопределить предыдущую переменную карты, если она есть. В настоящее время я настраиваю его, как показано ниже, а затем использую cron_map.push (), как указано выше, передавая все выражение в карту cron (не уверен, что это возможно). Я хочу, чтобы на карте сохранялось расписание cron для адреса учетной записи каждого пользователя и заменялось, если владелец устанавливает новое расписание. Из того, что я прочитал, карта может быть не лучшим вариантом для этого. Любые идеи о том, как исправить эти проблемы, будут высоко оценены.

 var cron_map = {}; ... cron_map[recurringAddress] = cron_map[recurringAddress] || []; ...