Meteor中的持久会话

8

因此,我观察到的 Meteor 中比较令人困惑的一个方面是,会话在每次刷新时都会被清除。由于它不是一个持久存储库,我应该把像 userid 这样的东西放在哪里,或者把人们在我的应用程序状态机中的位置放在哪里呢?

这些情况的模式是什么?

2个回答

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);
  },
});

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

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


1
不错。我是为了其他事情找到这个,但我肯定会使用这个想法。谢谢,Sebastien! - Mister R2

3

首先,我会使用meteor内置的认证来存储用户ID。它们默认使用本地存储,但据我所知,没有简单的方法可以连接到它。

但是,如果您希望在刷新后保留数据,我认为应该将其存储在mongo中或使用URL来指示它们在“状态机”中的位置。例如,您可以使用Bootstrap路由器使用pushState更改URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接