铁路由器数据findOne返回undefined

时间:2015-03-07 17:12:44

标签: meteor iron-router

我有streams发布和订阅设置但由于某种原因,如果我在我的路线中执行以下操作,则视图不会获取数据:

Router.route '/seasons/:season/episodes/:episode',
    name: 'episode'
    action: ->
        @render(
            'episode',
            data: ->
                Streams.findOne({season: @params.season, episode: @params.episode})
        )

如果我记录了params,他们就像预期的那样,并通过db或浏览器控制台手动执行findOne按预期返回数据。

如果我删除了params,那么它只是Streams.findOne(),数据将返回数据库中的第一个stream,并且视图可以按预期访问它。我真的不确定这里发生了什么。

1 个答案:

答案 0 :(得分:1)

在尝试访问数据之前,您可能需要等待流发布:Meteor中的Pub / Sub机制是异步的,当您订阅某些数据时,由于底层数据,您不会立即将其恢复到浏览器中客户端/服务器延迟。

尝试重新组织您的代码,如下所示:

Router.route '/seasons/:season/episodes/:episode',
  name: 'episode'
  template: 'episode'
  data: ->
    Streams.findOne({season: @params.season, episode: @params.episode})
  waitOn: ->
    Meteor.subscribe 'streams', @params.season, @params.episode