因此,我观察到的 Meteor 中比较令人困惑的一个方面是,会话在每次刷新时都会被清除。由于它不是一个持久存储库,我应该把像 userid 这样的东西放在哪里,或者把人们在我的应用程序状态机中的位置放在哪里呢?
这些情况的模式是什么?
因此,我观察到的 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()检索它们。
您可以在此处测试Leaderboard示例的工作变体:https://github.com/sebastienbarre/meteor-leaderboard
首先,我会使用meteor内置的认证来存储用户ID。它们默认使用本地存储,但据我所知,没有简单的方法可以连接到它。
但是,如果您希望在刷新后保留数据,我认为应该将其存储在mongo中或使用URL来指示它们在“状态机”中的位置。例如,您可以使用Bootstrap路由器使用pushState
更改URL。