我有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
,并且视图可以按预期访问它。我真的不确定这里发生了什么。
答案 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