#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] || []; ...