Meteor Session和浏览器刷新

Jon*_*ono 27 javascript session meteor

当页面刷新时,Meteor会话是否会重置?

出于某种原因,我认为他们没有,但似乎他们这样做了.有没有办法让它们坚持下去?

如果不是最好的解决方案是什么?

我想允许相同的数据显示用户是否刷新(此数据特定于用户),即使他们尚未注册.

seb*_*n.b 10

实际上你可以做的是创建Session的"子类",在调用set()时将值存储在Amplify的存储中.您将自动继承Session的所有反应属性.这是代码,它对我有用:

SessionAmplify = _.extend({}, Session, {
  keys: _.object(_.map(amplify.store(), function(value, key) {
    return [key, JSON.stringify(value)]
  })),
  set: function (key, value) {
    Session.set.apply(this, arguments);
    amplify.store(key, value);
  },
});
Run Code Online (Sandbox Code Playgroud)

只需使用SessionAmplify.set/get调用替换所有Session.set/get调用.调用set()时,将调用父Session方法,以及amplify.store().当首次创建"子类"时,它会将放大其存储区中的所有内容加载到其键中,以便可以使用get()立即检索它们.

您可以在此处测试排行榜示例的工作变体:https://github.com/sebastienbarre/meteor-leaderboard


Wes*_*Wes 8

这是一个老问题,但它是搜索"流星会话管理器"的第二个命中,所以我认为重要的是添加包u2622:persistent-session完美地解决了这个问题.

来自以下网站的文档:https: //atmospherejs.com/u2622/persistent-session

安装

meteor add u2622:persistent-session

而已!现在,您可以使用Session.setPersistent设置会在刷新后保存的会话变量.

如果你愿意,你可以让Session.set也这样做.请参阅下面的选项部分.


And*_*eas 0

Session是一种全局键值存储,是一种反应式存储。

http://docs.meteor.com/#session

Session 在客户端上提供了一个全局对象,您可以使用它来存储任意一组键值对。使用它来存储诸如列表中当前所选项目之类的内容。

Session 的特别之处在于它是响应式的。如果从模板内部调用 Session.get("currentList"),则每当调用 Session.set("currentList", x) 时,模板都会自动重新呈现。

如果您必须在客户端中保留某些内容,localstorage如果您喜欢旧版浏览器,则可以使用浏览器或 cookie。