Meteor作业集合未运行远程作业

时间:2016-08-18 00:37:12

标签: meteor job-scheduling meteor-collections

使用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未捕获错误:作业远程方法调用错误,找不到有效的调用方法。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

更改此行:

que = ParsingJobs.processJobs('parsing', {workTimeout: 10000}, (job, cb) ->

到此:

que = Job.processJobs('parsing', {workTimeout: 10000}, (job, cb) ->