流星:不可靠的会话变量?

时间:2013-10-06 04:02:50

标签: session meteor

我正在提供没有用户帐户的服务,我想限制我正在访问的页面。

所以每个页面都是一个“盒子”,在每个“盒子”上我都有一堆“文件”。

我已在server / publications.coffee

中发布了相关信息
Meteor.publish 'files', (boxId)->
  console.log boxId
  return Files.find({boxId:boxId})

我的'box'文件有一个订阅句柄:

@filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId')

currentBoxId存储在会话变量中。

这是一个疯狂的部分:我希望这可以工作,而且它是在我第一次启动服务器的时候。第一位代码中的console.log打印正确的ID。然后,控制台日志突然开始返回“null”,即使我在浏览器控制台中控制会话var,它也会正确返回。

我觉得这里有某种加载异步问题,但我不知道发生了什么。

任何线索?

1 个答案:

答案 0 :(得分:0)

啊,想通了。显然,可以在设置会话变量之前呈现模板。通常,您将集合句柄放在应用程序范围的main.js文件中,但如果订阅依赖于会话变量,则这不起作用。

我做了以下事情:

Template.boxPage.created = ()->
  @filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId')