Meteor中的持续会话



因此,我在Meteor中观察到的一个更令人困惑的方面是,每次刷新都会清除会话。既然它不是一个持久存储,我应该把userid之类的东西放在哪里,或者人们在我的应用程序的状态机中的位置?

这些场景的模式是什么?

实际上,您可以创建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);
  },
});

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

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

首先,我会使用Auth中内置的流星来存储用户ID。我认为他们默认使用本地存储,但AFAIK没有简单的方法可以实现这一点。

然而,我想如果你想让东西在刷新过程中存活下来,你应该把它存储在mongo中,或者使用URL来指示它们在"状态机"中的位置。您可以使用引导路由器(例如)使用pushState来更改URL。

相关内容

  • 没有找到相关文章

最新更新