当页面刷新时,Meteor会话会重置吗?
出于某种原因,我认为他们没有,但似乎他们这样做了。有没有办法让它们坚持下去?
如果不是最好的解决方案呢?
我想允许相同的数据显示用户是否刷新(此数据特定于用户),即使他们尚未注册。
答案 0 :(得分: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);
},
});
使用SessionAmplify.set / get调用替换所有Session.set / get调用。调用set()时,将调用父Session方法,以及amplify.store()。当首次创建“子类”时,它会加载放在其键中的放大商店中的所有内容,以便可以使用get()立即检索它们。
您可以在此处测试排行榜示例的工作变体:https://github.com/sebastienbarre/meteor-leaderboard
答案 1 :(得分:8)
这是一个老问题,但它是搜索" meteor会话管理器"的第二个问题,所以我认为添加包u2622非常重要:持久性-session完美地解决了这个问题。
来自以下文档: https://atmospherejs.com/u2622/persistent-session
安装
meteor add u2622:persistent-session
那就是它!现在您可以使用Session.setPersistent来设置会话 刷新后将保存的变量。
如果您愿意,您也可以让Session.set执行此操作。见 选项部分。
答案 2 :(得分:4)
我刚刚为Atmosphere创建了UserSession包,它基本上是基于用户的持久性Session
。
答案 3 :(得分:1)
所以我认为最好的方法是使用amplifyJS包。
以下是一些显示他们如何使用它的要点: https://gist.github.com/2865146
答案 4 :(得分:0)
Session
是一个全局键值存储,是一个被动的存储。
http://docs.meteor.com/#session
Session在客户端上提供了一个全局对象,可用于存储任意一组键值对。用它来存储列表中当前所选项目之类的内容。
Session的特别之处在于它是被动的。如果从模板内部调用Session.get(“currentList”),则只要调用Session.set(“currentList”,x),模板就会自动重新呈现。
如果您必须在客户端中保留某些内容,则可以使用浏览器localstorage
或Cookie,如果您关心旧版浏览器。