是否有可能在kue节点js中更新已经创build的作业
嗨,我正在使用Kue创造就业机会。
jobs.create('myQueue', { 'title':'test', 'job_id': id ,'params': params } ) .delay(milliseconds) .removeOnComplete( true ) .save(function(err) { if (err) { console.log( 'jobs.create.err', err ); } });
每个工作都有一个延迟时间,通常是3个小时。
现在我将检查每个传入的请求,要创build一个新的工作,并获得ID。
正如你从上面的代码可以看到,当我创build工作,我将添加作业ID作业。
所以现在我想检查传入的ID与队列中的现有作业的job_id s和更新现有的作业与新PARAMMS如果find一个匹配的ID。
所以我的工作队列将有唯一的job_id每次:)。
可能吗 ? ,我search了很多,但没有find帮助,我检查了kue json API 。 但它只能创build并获取检索作业,不能更新现有的logging。
提前致谢 。
这在文档和示例中没有提及,但有一个job
的更新方法。
您可以通过job_id
这样更新您的工作:
// you have the job_id var job_id_to_update = 1; // get delayed jobs jobs.delayed( function( err, ids ) { ids.forEach( function( id ) { kue.Job.get( id, function( err, job ) { // check if this is job we want if (job.data.job_id === job_id_to_update) { // change job properties job.data.title = 'set another title'; // save changes job.update(); } }); }); });
完整的例子就在这里 。
更新:你也可以考虑使用“本机”作业ID,这是知名的kue。 创build作业时,您可以获取作业ID:
var myjob = jobs.create('myQueue', ... .save(function(err) { if (err) { console.log( 'jobs.create.err', err ); } var job_id = myjob.id; // you can send job_id back to the client });
现在,您可以直接修改作业而无需循环显示列表:
kue.Job.get( id, function( err, job ) { // change job properties job.data.title = 'set another title'; // save changes job.update(); });