流星中的持久会话

use*_*338 8 session-state user-identification state-machine-workflow node.js meteor

因此,我一直在观察Meteor的一个比较令人困惑的方面是每次刷新都会清除Sessions.既然它不是持久性存储,我会在哪里放置像userid这样的东西,或者人们在我的应用程序的状态机中?

这些场景的模式是什么?

seb*_*n.b 8

实际上你可以做的是创建一个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


Tom*_*man 3

好吧,首先我将使用Auth 中内置的Memets来存储用户 ID。我认为他们默认使用本地存储,但据我所知,没有简单的方法可以连接到它。

但是,我认为如果您希望内容在刷新后仍然存在,您应该将其存储在 mongo 中,或者使用 URL 来指示它们在“状态机”中的位置。您可以使用引导路由器(例如)来pushState更改 URL。