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
这是一个老问题,但它是搜索"流星会话管理器"的第二个命中,所以我认为重要的是添加包u2622:persistent-session完美地解决了这个问题.
来自以下网站的文档:https: //atmospherejs.com/u2622/persistent-session
安装
meteor add u2622:persistent-session
而已!现在,您可以使用Session.setPersistent设置会在刷新后保存的会话变量.
如果你愿意,你可以让Session.set也这样做.请参阅下面的选项部分.
这Session是一种全局键值存储,是一种反应式存储。
http://docs.meteor.com/#session
Session 在客户端上提供了一个全局对象,您可以使用它来存储任意一组键值对。使用它来存储诸如列表中当前所选项目之类的内容。
Session 的特别之处在于它是响应式的。如果从模板内部调用 Session.get("currentList"),则每当调用 Session.set("currentList", x) 时,模板都会自动重新呈现。
如果您必须在客户端中保留某些内容,localstorage如果您喜欢旧版浏览器,则可以使用浏览器或 cookie。