Meteor:当从订阅中抛出错误时,我无法触发onError回调

时间:2015-02-09 22:18:12

标签: meteor

好的,这是我发布数据的服务器代码,如果当前用户有权查看它

# server publish
Meteor.publish 'clients', (locationId) ->
if SecurityContext.canAccessLocation @userId, locationId
    @ready()
    @error new Meteor.Error('unauthorized', 'You do not have access to this location')
    return

ClientManagement.Collections.Clients.find({ locationId: locationId }, { sort: firstName: 1 })

这是我的铁路由器控制器的一部分,我等待我的数据返回,但我的回调是onReady或onError永远不会被调用

# iron route controller
waitOn: ->
    Meteor.subscribe 'clients', Session.get 'selectedLocationId',
        onReady: ->
            debugger
        onError: (error) ->
            debugger
            AppHelper.logger.error error.reason

我在这里做错了什么?有什么建议?我也尝试过类似铁路由器之类的东西,只是为了仔细检查它与路由器无关。

我是在客户端做到的:

Meteor.startup () ->

  Tracker.autorun ->
      Meteor.subscribe 'clients', Session.get 'selectedLocationId',
          onReady: ->
              debugger
          onError: (error) ->
              debugger
              AppHelper.logger.error error.reason

再一次,我的回调从未被调用过......任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:2)

这看起来像是一个coffeescript错误。转换器不知道您是否要将回调对象作为参数包含在subscribeget中。它选择后者,但你想要前者。尝试这样的事情:

Meteor.subscribe 'clients', Session.get('selectedLocationId'),
  onReady: ->
    console.log 'ready!'
  onError: ->
    console.log 'error!'