私がメテオで観察してきたより混乱している側面の1つは、セッションがすべてリフレッシュされることです。それは永続的なストアではないので、どこにuseridのようなものを置くのでしょうか、あるいは人々が私のアプリケーションの状態マシンにいるのでしょうか?流星の永続セッション
これらのシナリオのパターンは何ですか?
私がメテオで観察してきたより混乱している側面の1つは、セッションがすべてリフレッシュされることです。それは永続的なストアではないので、どこにuseridのようなものを置くのでしょうか、あるいは人々が私のアプリケーションの状態マシンにいるのでしょうか?流星の永続セッション
これらのシナリオのパターンは何ですか?
まず、私は流星built in Authを使用してユーザーIDを格納しています。彼らはデフォルトではローカルストレージを使用していますが、AFAIKには簡単に取り込めません。
しかし、リフレッシュしても何かを残しておきたい場合は、mongoに保存するか、URLを使って「状態マシン」にあるかを示す必要があります。ブートストラップルーター(たとえば)を使用してpushState
を使用してURLを変更することができます。
実際には、set()が呼び出されたときにAmplifyのローカルストレージに値を格納するSessionの「サブクラス」を作成することができます。 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 /取得の呼び出しで、すべてのSession.set /取得の呼び出しを交換してください。 set()が呼び出されると、親Sessionメソッドが呼び出され、amplify.store()も呼び出されます。 "サブクラス"が最初に作成されると、get()ですぐに取り出すことができるように、キーの中に増幅のストア内にあるすべてのものをロードします。 https://github.com/sebastienbarre/meteor-leaderboard
ニース:
現在地リーダーボードの例の作業バリエーションをテストすることができます。私は何かのためにこれを見つけましたが、私は完全にこのアイデアを使用するつもりです。ありがとう、セバスチャン! –
+1、これは美しく機能します – danii