是否有可能在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(); });