使用vsivsi:job-collection,我设置了the example中的作业,但区别在于我的作业是在服务器上处理的。与在客户端处理作业的示例应用程序相比,我看不出有什么缺失。
LIB / db.coffee
@ParsingJobs = JobCollection('parsing', {
workTimeout: 10000
transform: (d) ->
try
res = new Job(ParsingJobs, d)
catch e
res = d
return res
})
if Meteor.isServer
Meteor.startup(->
ParsingJobs.allow({
admin: (user_id, method, params) ->
# commented temporarily Roles.userIsInRole(Meteor.user(), ['admin'])
true
})
ParsingJobs.startJobServer()
server.coffee
que = ParsingJobs.processJobs('parsing', {workTimeout: 10000}, (job, cb) ->
# do some processing
job.done('success')
cb()
ParsingJobs.find({type: 'parsing', status: 'ready'}).observe
added: ->
que.trigger()
在客户端我可以运行shell命令:
x = ParsingJobs.find().fetch()[0]
x.rerun()
结果:
job_class.js:16未捕获错误:作业远程方法调用错误,找不到有效的调用方法。
我做错了什么?
答案 0 :(得分:1)
更改此行:
que = ParsingJobs.processJobs('parsing', {workTimeout: 10000}, (job, cb) ->
到此:
que = Job.processJobs('parsing', {workTimeout: 10000}, (job, cb) ->