Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 流星:不可靠的会话变量?_Session_Meteor - Fatal编程技术网

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

Session 流星:不可靠的会话变量?,session,meteor,Session,Meteor,我正在创建一个没有用户帐户的服务,我想限制我访问的页面 所以每一页都是一个盒子,每个盒子上都有一堆文件 我已在server/publications.coffee中发布了相关信息 Meteor.publish 'files', (boxId)-> console.log boxId return Files.find({boxId:boxId}) “box”的我的文件具有订阅句柄: @filesHandle = Meteor.subscribe 'files', Session.

我正在创建一个没有用户帐户的服务,我想限制我访问的页面

所以每一页都是一个盒子,每个盒子上都有一堆文件

我已在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,即使在浏览器控制台中输入console.log会话变量,它也会正确返回

我觉得这里有一些加载异步的问题,但我不知道发生了什么


有什么线索吗?

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

我做了以下工作:

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

请记住,Meteor会话不会在页面刷新之间持续,如果在浏览器中按住Ctrl+R键,则不要期望保留该值。见鬼,你说得对。突然,我不知道为什么我写的代码是有效的。刷新时,不会保留会话变量,但仍会检索相关数据!你知道这怎么可能吗?下面是相关的代码…Template.boxPage.created=->@filesHandle=Meteor.subscribe'files',Session.get'currentBoxId'等等,进一步检查后,我的Session变量似乎会在页面刷新期间持续存在。Meteor是否改变了它处理会话的方式?如果您按住Ctrl+R键,您的会话将被清除,但如果您执行“热代码推送”,即更改代码并为您刷新浏览器,会话将被保留。这一差异使我多次绊倒,寻找一个错误,该错误被证明是键盘和椅子之间的错误;我还看到一些包记不起它们的名称,它们使用本地存储来尝试和维护会话,因此您的项目中可能有一个包。@BobDavies这是一个很好的事实。谢谢